python异步任务队列示例


Posted in Python onApril 01, 2014

很多场景为了不阻塞,都需要异步回调机制。这是一个简单的例子,大家参考使用吧

#!/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()
Python 相关文章推荐
在Python的Django框架中实现Hacker News的一些功能
Apr 17 Python
Python 序列的方法总结
Oct 18 Python
详解常用查找数据结构及算法(Python实现)
Dec 09 Python
pandas 实现将重复表格去重,并重新转换为表格的方法
Apr 18 Python
元组列表字典(莫烦python基础)
Apr 03 Python
python在OpenCV里实现投影变换效果
Aug 30 Python
python matplotlib拟合直线的实现
Nov 19 Python
Django实现从数据库中获取到的数据转换为dict
Mar 27 Python
用python写爬虫简单吗
Jul 28 Python
利用python 下载bilibili视频
Nov 13 Python
Python扫描端口的实现
Jan 25 Python
python向xls写入数据(包括合并,边框,对齐,列宽)
Feb 02 Python
用Python编程实现语音控制电脑
Apr 01 #Python
35个Python编程小技巧
Apr 01 #Python
ptyhon实现sitemap生成示例
Mar 30 #Python
python实现百度关键词排名查询
Mar 30 #Python
python获取网页状态码示例
Mar 30 #Python
python单线程实现多个定时器示例
Mar 30 #Python
python实现猜数字游戏(无重复数字)示例分享
Mar 29 #Python
You might like
php 魔术常量详解及实例代码
2016/12/04 PHP
php+mysql+jquery实现简易的检索自动补全提示功能
2017/04/15 PHP
YII框架页面缓存操作示例
2019/04/29 PHP
Thinkphp 框架扩展之Widget扩展实现方法分析
2020/04/23 PHP
jquery访问ashx文件示例代码
2014/08/11 Javascript
在JS数组特定索引处指定位置插入元素的技巧
2014/08/24 Javascript
5种处理js跨域问题方法汇总
2014/12/04 Javascript
JavaScript优化专题之Loading and Execution加载和运行
2016/01/20 Javascript
JavaScript接口的实现三种方式(推荐)
2016/06/14 Javascript
NodeJS实现微信公众号关注后自动回复功能
2017/05/31 NodeJs
使用jquery DataTable和ajax向页面显示数据列表的方法
2018/08/09 jQuery
解决Vue.js父组件$on无法监听子组件$emit触发事件的问题
2018/09/12 Javascript
使用微信小程序开发弹出框应用实例详解
2018/10/18 Javascript
NestJs 静态目录配置详解
2019/03/12 Javascript
实例分析Array.from(arr)与[...arr]到底有何不同
2019/04/09 Javascript
微信小程序页面间传值与页面取值操作实例分析
2019/04/30 Javascript
利用原生JavaScript实现造日历轮子实例代码
2019/05/08 Javascript
Vue.js中的组件系统
2019/05/30 Javascript
JS使用正则表达式判断输入框失去焦点事件
2019/10/16 Javascript
原生js实现放大镜组件
2021/01/22 Javascript
Vue实现圆环进度条的示例
2021/02/06 Vue.js
Python实现命令行通讯录实例教程
2016/08/18 Python
Python实现模拟分割大文件及多线程处理的方法
2017/10/10 Python
Python登录并获取CSDN博客所有文章列表代码实例
2017/12/28 Python
python+pandas生成指定日期和重采样的方法
2018/04/11 Python
python reverse反转部分数组的实例
2018/12/13 Python
python3 字符串/列表/元组(str/list/tuple)相互转换方法及join()函数的使用
2019/04/03 Python
Python FFT合成波形的实例
2019/12/04 Python
python实现单机五子棋
2020/08/28 Python
Python xlwings插入Excel图片的实现方法
2021/02/26 Python
详解CSS3的图层阴影和文字阴影效果使用
2016/06/09 HTML / CSS
美国领先的家庭健康检测试剂盒提供商:LetsGetChecked
2019/03/18 全球购物
Scotch Porter官方网站:男士美容产品
2020/08/31 全球购物
在数据文件自动增长时,自动增长是否会阻塞对文件的更新
2014/05/01 面试题
男方父母证婚词
2014/01/12 职场文书
元旦晚会邀请函
2014/02/01 职场文书