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实现破解12306图片验证码的方法分析
Dec 29 Python
Python爬虫爬取一个网页上的图片地址实例代码
Jan 16 Python
TensorFlow平台下Python实现神经网络
Mar 10 Python
python3.4控制用户输入与输出的方法
Oct 17 Python
Python Unittest根据不同测试环境跳过用例的方法
Dec 16 Python
对python PLT中的image和skimage处理图片方法详解
Jan 10 Python
Python3列表内置方法大全及示例代码小结
May 10 Python
python安装scipy的方法步骤
Jun 26 Python
python画蝴蝶曲线图的实例
Nov 21 Python
numpy:找到指定元素的索引示例
Nov 26 Python
Python如何使用函数做字典的值
Nov 30 Python
pytorch交叉熵损失函数的weight参数的使用
May 24 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
Windows Apache2.2.11及Php5.2.9-1的安装与配置方法
2009/06/08 PHP
php模拟js函数unescape的函数代码
2012/10/20 PHP
PHP批量上传图片的具体实现方法介绍.
2014/02/26 PHP
php数据库备份还原类分享
2014/03/20 PHP
php正则表达式获取内容所有链接
2015/07/24 PHP
thinkPHP2.1自定义标签库的导入方法详解
2016/07/20 PHP
PHP自定义图片缩放函数实现等比例不失真缩放的方法
2016/08/19 PHP
js验证表单大全
2006/11/25 Javascript
解析John Resig Simple JavaScript Inheritance代码
2012/12/03 Javascript
jquery获取div距离窗口和父级dv的距离示例
2013/10/10 Javascript
Js操作Select大全(取值、设置选中等等)
2013/10/29 Javascript
node.js中的buffer.write方法使用说明
2014/12/10 Javascript
JavaScript将当前时间转换成UTC标准时间的方法
2015/04/06 Javascript
Vue + Webpack + Vue-loader学习教程之相关配置篇
2017/03/14 Javascript
vue完成项目后,打包成静态文件的方法
2018/09/03 Javascript
使用weixin-java-miniapp配置进行单个小程序的配置详解
2019/03/29 Javascript
express启用https使用小记
2019/05/21 Javascript
TypeScript 引用资源文件后提示找不到的异常处理技巧
2020/07/15 Javascript
js实现贪吃蛇游戏(简易版)
2020/09/29 Javascript
Python实现字典的key和values的交换
2015/08/04 Python
python实现获取Ip归属地等信息
2016/08/27 Python
Python操作Sql Server 2008数据库的方法详解
2018/05/17 Python
Python json模块dumps、loads操作示例
2018/09/06 Python
python opencv读mp4视频的实例
2018/12/07 Python
Python 中 -m 的典型用法、原理解析与发展演变
2019/11/11 Python
opencv python如何实现图像二值化
2020/02/03 Python
PyInstaller运行原理及常用操作详解
2020/06/13 Python
python 如何调用 dubbo 接口
2020/09/24 Python
一款恶搞头像特效的制作过程 利用css3和jquery
2014/11/21 HTML / CSS
css3 利用transform打造走动的2D时钟
2020/10/20 HTML / CSS
eBay荷兰购物网站:eBay.nl
2020/06/26 全球购物
中西医结合临床医学专业大学生自荐信
2013/09/28 职场文书
校园公益广告语
2014/03/13 职场文书
爱国卫生月活动总结范文
2014/04/25 职场文书
伊琍体标语
2014/06/25 职场文书
七一晚会主持词
2015/06/29 职场文书