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实现异步回调机制代码分享
Jan 10 Python
使用BeautifulSoup爬虫程序获取百度搜索结果的标题和url示例
Jan 19 Python
进一步理解Python中的函数编程
Apr 13 Python
Python的Django框架下管理站点的基本方法
Jul 17 Python
Django项目中用JS实现加载子页面并传值的方法
May 28 Python
selenium + python 获取table数据的示例讲解
Oct 13 Python
解决python彩色螺旋线绘制引发的问题
Nov 23 Python
python3的UnicodeDecodeError解决方法
Dec 20 Python
python matplotlib实现将图例放在图外
Apr 17 Python
如何在Python对Excel进行读取
Jun 04 Python
Python中X[:,0]和X[:,1]的用法
May 10 Python
Python数据可视化之绘制柱状图和条形图
May 25 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
PHP4和PHP5共存于一系统
2006/11/17 PHP
使用PHP破解防盗链图片的一个简单方法
2014/06/07 PHP
php调用mysql存储过程实例分析
2014/12/29 PHP
ext 代码生成器
2009/08/07 Javascript
ExtJS GridPanel 根据条件改变字体颜色
2010/03/08 Javascript
javascript 密码强度验证规则、打分、验证(给出前端代码,后端代码可根据强度规则翻译)
2010/05/18 Javascript
js页面跳转的问题(跳转到父页面、最外层页面、本页面)
2013/08/14 Javascript
js获取url中的参数且参数为中文时通过js解码
2014/03/19 Javascript
JavaScript不使用prototype和new实现继承机制
2014/12/29 Javascript
JS+CSS实现鼠标经过弹出一个DIV框完整实例(带缓冲动画渐变效果)
2016/03/25 Javascript
jQuery仿京东商城楼梯式导航定位菜单
2016/07/25 Javascript
Angular2 路由问题修复详解
2017/03/01 Javascript
jQuery基于事件控制实现点击显示内容下拉效果
2017/03/07 Javascript
兼容浏览器的js事件绑定函数(详解)
2017/05/09 Javascript
关于Promise 异步编程的实例讲解
2017/09/01 Javascript
jquery实现动态改变css样式的方法分析
2019/05/27 jQuery
微信小程序实现简单文字跑马灯
2020/05/26 Javascript
JS实现密码框效果
2020/09/10 Javascript
[03:37]2016完美“圣”典 风云人物:Mikasa专访
2016/12/07 DOTA
[49:28]VP vs Optic 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
Python中用PIL库批量给图片加上序号的教程
2015/05/06 Python
python实现识别相似图片小结
2016/02/22 Python
基于Python实现ComicReaper漫画自动爬取脚本过程解析
2019/11/11 Python
详解Python在使用JSON时需要注意的编码问题
2019/12/06 Python
Python 的 f-string 可以连接字符串与数字的原因解析
2021/02/20 Python
纯css3实现宠物小鸡实例代码
2018/10/08 HTML / CSS
ProBikeKit美国官网:自行车套件,跑步和铁人三项套件
2016/10/13 全球购物
Theory美国官网:后现代都市风时装品牌
2018/05/09 全球购物
Spartoo美国:欧洲排名第一的在线时装零售商
2019/12/12 全球购物
VisionPros美国站:加拿大在线隐形眼镜和眼镜零售商
2020/02/11 全球购物
C#面试题问题集
2016/04/02 面试题
春节联欢晚会主持词范文
2014/03/24 职场文书
遗产继承公证书
2014/04/09 职场文书
小学学校评估方案
2014/06/08 职场文书
机电一体化应届生求职信
2014/08/09 职场文书
授权委托书公证
2014/09/14 职场文书