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操作摄像头截图实现远程监控的例子
Mar 25 Python
Python下的subprocess模块的入门指引
Apr 16 Python
Python中map和列表推导效率比较实例分析
Jun 17 Python
python实现爬虫统计学校BBS男女比例之多线程爬虫(二)
Dec 31 Python
Python Paramiko模块的安装与使用详解
Nov 18 Python
Python中生成器和迭代器的区别详解
Feb 10 Python
Python 变量类型详解
Oct 10 Python
python3.x提取中文的正则表达式示例代码
Jul 23 Python
python解析xml文件方式(解析、更新、写入)
Mar 05 Python
重写django的model下的objects模型管理器方式
May 15 Python
python“静态”变量、实例变量与本地变量的声明示例
Nov 13 Python
opencv python 对指针仪表读数识别的两种方式
Jan 14 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
无线电的诞生过程
2021/03/01 无线电
session在PHP大型web应用中的使用
2011/06/25 PHP
smarty表格换行实例
2014/12/15 PHP
PHP实现批量生成App各种尺寸Logo
2015/03/19 PHP
Jquery显示和隐藏元素或设为只读(含Ligerui的控件禁用,实例说明介绍)
2013/07/09 Javascript
jquery 鼠标滑动显示详情应用示例
2014/01/24 Javascript
jquery的live使用注意事项
2014/02/18 Javascript
JS实现向表格中动态添加行的方法
2015/03/30 Javascript
ClearTimeout消除闪动实例代码
2016/02/29 Javascript
jQuery3.0中的buildFragment私有函数详解
2016/08/16 Javascript
基于百度地图实现产品销售的单位位置查看功能设计与实现
2016/10/21 Javascript
jQuery电话号码验证实例
2017/01/05 Javascript
使用grunt合并压缩js和css文件的方法
2017/03/02 Javascript
使用JS模拟锚点跳转的实例
2018/02/01 Javascript
AngularJS对动态增加的DOM实现ng-keyup事件示例
2018/03/12 Javascript
浅谈如何通过node.js对数据进行MD5加密
2018/05/16 Javascript
vue实现自定义日期组件功能的实例代码
2018/11/06 Javascript
Vue开发Html5微信公众号的步骤
2019/04/11 Javascript
基于elementUI使用v-model实现经纬度输入的vue组件
2019/05/12 Javascript
解决vue-cli项目开发运行时内存暴涨卡死电脑问题
2019/10/29 Javascript
jQuery实现轮播图效果
2019/11/26 jQuery
js实现踩五彩块游戏
2020/02/08 Javascript
Vue 解决通过this.$refs来获取DOM或者组件报错问题
2020/07/28 Javascript
Python实现删除当前目录下除当前脚本以外的文件和文件夹实例
2015/07/27 Python
python email smtplib模块发送邮件代码实例
2018/04/26 Python
django 多数据库配置教程
2018/05/30 Python
python 生成图形验证码的方法示例
2018/11/11 Python
Django项目之Elasticsearch搜索引擎的实例
2019/08/21 Python
Pytorch释放显存占用方式
2020/01/13 Python
详解Python 循环嵌套
2020/07/09 Python
电子商务专业学生的自我鉴定
2013/11/28 职场文书
工作时间上网检讨书
2014/02/03 职场文书
教师党员岗位承诺书
2014/05/29 职场文书
个人批评与自我批评范文
2014/10/17 职场文书
一年级语文上册复习计划
2015/01/17 职场文书
化工厂员工工作总结
2015/10/15 职场文书