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

首頁 > 編程 > Python > 正文

python異步任務隊列示例

2020-02-23 05:17:46
字體:
供稿:網(wǎng)友

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

代碼如下:
#!/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)

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 如皋市| 大丰市| 阳江市| 耒阳市| 温宿县| 云霄县| 临西县| 镇雄县| 新兴县| 扬州市| 京山县| 繁峙县| 田阳县| 正定县| 东阳市| 张家川| 翁牛特旗| 凤山县| 曲靖市| 施秉县| 开阳县| 定安县| 渑池县| 霞浦县| 慈溪市| 庆城县| 溆浦县| 垦利县| 棋牌| 镇远县| 扎兰屯市| 白山市| 聂拉木县| 吉水县| 年辖:市辖区| 门头沟区| 凌源市| 安西县| 勐海县| 嘉祥县| 乌拉特中旗|