国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

python異步任務隊列示例

2019-11-25 18:28:05
字體:
來源:轉載
供稿:網友

很多場景為了不阻塞,都需要異步回調機制。這是一個簡單的例子,大家參考使用吧

復制代碼 代碼如下:

#!/usr/bin/env python
# -*- coding: UTF-8 -*-

import logging
import queue
import threading

def func_a(a, b):
    return a + b

def func_b():
    pass

def func_c(a, b, c):
    return a, b, c

# 異步任務隊列
_task_queue = queue.Queue()

def async_call(function, callback, *args, **kwargs):
    _task_queue.put({
        'function': function,
        'callback': callback,
        'args': args,
        'kwargs': kwargs
    })

def _task_queue_consumer():
    """
    異步任務隊列消費者
    """
    while True:
        try:
            task = _task_queue.get()
            function = task.get('function')
            callback = task.get('callback')
            args = task.get('args')
            kwargs = task.get('kwargs')
            try:
                if callback:
                    callback(function(*args, **kwargs))
            except Exception as ex:
                if callback:
                    callback(ex)
            finally:
                _task_queue.task_done()
        except Exception as ex:
            logging.warning(ex)

def handle_result(result):
    print(type(result), result)

if __name__ == '__main__':
    t = threading.Thread(target=_task_queue_consumer)
    t.daemon = True
    t.start()

    async_call(func_a, handle_result, 1, 2)
    async_call(func_b, handle_result)
    async_call(func_c, handle_result, 1, 2, 3)
    async_call(func_c, handle_result, 1, 2, 3, 4)

    _task_queue.join()

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 体育| 宜昌市| 新河县| 延庆县| 博野县| 宣武区| 司法| 蓬溪县| 德惠市| 聂拉木县| 横峰县| 大足县| 汉沽区| 林甸县| 广德县| 张家界市| 云安县| 杭州市| 京山县| 体育| 运城市| 彭州市| 潮州市| 定襄县| 微山县| 日喀则市| 吉林市| 辽阳县| 宜黄县| 万载县| 屏南县| 芜湖市| 呼玛县| 西乌珠穆沁旗| 祥云县| 内乡县| 时尚| 霍邱县| 汝城县| 镇康县| 乌拉特中旗|