国产探花免费观看_亚洲丰满少妇自慰呻吟_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ā)表
主站蜘蛛池模板: 贵定县| 鄂伦春自治旗| 常山县| 延寿县| 盐山县| 江城| 平顶山市| 启东市| 嘉义县| 乌兰浩特市| 女性| 杭锦后旗| 永德县| 望江县| 海口市| 罗平县| 临朐县| 广平县| 鄯善县| 镇宁| 景德镇市| 莆田市| 星座| 晋江市| 孝感市| 扎兰屯市| 通辽市| 津南区| 鹤山市| 临泽县| 始兴县| 大渡口区| 博白县| 华蓥市| 鄂托克前旗| 谢通门县| 康保县| 阳春市| 洪泽县| 怀集县| 垫江县|