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中os和shutil模块实用方法集锦
May 13 Python
python基于xmlrpc实现二进制文件传输的方法
Jun 02 Python
Python三级目录展示的实现方法
Sep 28 Python
Python Numpy库datetime类型的处理详解
Jul 13 Python
使用Python paramiko模块利用多线程实现ssh并发执行操作
Dec 05 Python
Python模块/包/库安装的六种方法及区别
Feb 24 Python
python实现将range()函数生成的数字存储在一个列表中
Apr 02 Python
pandas 强制类型转换 df.astype实例
Apr 09 Python
Python CSS选择器爬取京东网商品信息过程解析
Jun 01 Python
python如何编写win程序
Jun 08 Python
Python爬虫使用bs4方法实现数据解析
Aug 25 Python
Python xmltodict模块安装及代码实例
Oct 05 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正则表达匹配中文问题分析小结
2012/03/25 PHP
php类常量的使用详解
2013/06/08 PHP
PHP中source #N问题的解决方法
2014/01/27 PHP
在一个js文件里远程调用jquery.js会在ie8下的一个奇怪问题
2010/11/28 Javascript
Jquery的hover方法让鼠标经过li时背景变色
2013/09/06 Javascript
JS实现多物体缓冲运动实例代码
2013/11/29 Javascript
js字符串截取函数slice、substring和substr的比较
2016/05/17 Javascript
js简单判断flash是否加载完成的方法
2016/06/21 Javascript
servlet+jquery实现文件上传进度条示例代码
2017/01/25 Javascript
node.js入门学习之url模块
2017/02/25 Javascript
ES6正则表达式的一些新功能总结
2017/05/09 Javascript
Layui Form 自定义验证的实例代码
2019/09/14 Javascript
[02:56]DOTA2上海特锦赛小组赛解说FreeAgain采访花絮
2016/02/27 DOTA
python基础教程之Hello World!
2014/08/29 Python
Python标准库内置函数complex介绍
2014/11/25 Python
Python简单实现安全开关文件的两种方式
2016/09/19 Python
Python数据分析之真实IP请求Pandas详解
2016/11/18 Python
python向字符串中添加元素的实例方法
2019/06/28 Python
Django ORM 常用字段与不常用字段汇总
2019/08/09 Python
Python pandas实现excel工作表合并功能详解
2019/08/29 Python
Python遍历字典方式就实例详解
2019/12/28 Python
Python 列表的清空方式
2020/01/13 Python
Python基于内置库pytesseract实现图片验证码识别功能
2020/02/24 Python
python中pickle模块浅析
2020/12/29 Python
css3实现多个元素依次显示效果
2017/12/12 HTML / CSS
微信小程序“圣诞帽”的实现思路详解
2017/12/28 HTML / CSS
加拿大时尚潮流大码女装购物网站:Addition Elle
2018/04/02 全球购物
企业年会主持词
2014/03/27 职场文书
《特殊的葬礼》教学反思
2014/04/27 职场文书
白血病捐款倡议书
2014/05/14 职场文书
我是一名护士演讲稿
2014/08/28 职场文书
作风转变心得体会
2014/09/02 职场文书
学术研讨会欢迎词
2015/01/26 职场文书
导游词之金鞭溪风景区
2019/09/12 职场文书
创业计划书之都市休闲农庄
2019/12/28 职场文书
python tkinter实现定时关机
2021/04/21 Python