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 相关文章推荐
linux系统使用python获取cpu信息脚本分享
Jan 15 Python
使用python删除nginx缓存文件示例(python文件操作)
Mar 26 Python
解析Python中的异常处理
Apr 28 Python
Python3处理文件中每个词的方法
May 22 Python
Python中操作mysql的pymysql模块详解
Sep 13 Python
Python实现判断一个整数是否为回文数算法示例
Mar 02 Python
Flask教程之重定向与错误处理实例分析
Aug 01 Python
pytorch:torch.mm()和torch.matmul()的使用
Dec 27 Python
python+selenium 脚本实现每天自动登记的思路详解
Mar 11 Python
10个python3常用排序算法详细说明与实例(快速排序,冒泡排序,桶排序,基数排序,堆排序,希尔排序,归并排序,计数排序)
Mar 17 Python
Pycharm中安装wordcloud等库失败问题及终端通过pip安装的Python库如何添加到Pycharm解释器中(推荐)
May 10 Python
Python中过滤字符串列表的方法
Dec 22 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
用文本作数据处理
2006/10/09 PHP
人大复印资料处理程序_补充篇
2006/10/09 PHP
jQuery实现可拖动的浮动层完整代码
2013/05/27 Javascript
js检验密码强度(低中高)附图
2014/06/05 Javascript
javascript常见操作汇总
2014/09/03 Javascript
Nodejs极简入门教程(二):定时器
2014/10/25 NodeJs
JS弹出可拖拽可关闭的div层完整实例
2015/02/13 Javascript
jQuery实现页面滚动时动态加载内容的方法
2015/03/20 Javascript
jquery衣服颜色选取插件效果代码分享
2015/08/28 Javascript
基于Javascript实现二级联动菜单效果
2016/03/04 Javascript
纯JS实现只能输入数字的简单代码
2017/06/21 Javascript
以v-model与promise两种方式实现vue弹窗组件
2018/05/21 Javascript
原生JS实现前端本地文件上传
2018/09/08 Javascript
angular 服务的单例模式(依赖注入模式下)详解
2018/10/22 Javascript
vue 内置过滤器的使用总结(附加自定义过滤器)
2018/12/11 Javascript
Vue使用vue-draggable 插件在不同列表之间拖拽功能
2020/03/12 Javascript
vue项目中使用多选框的实例代码
2020/07/22 Javascript
Vue 构造选项 - 进阶使用说明
2020/08/14 Javascript
利用Python3分析sitemap.xml并抓取导出全站链接详解
2017/07/04 Python
python开启摄像头以及深度学习实现目标检测方法
2018/08/03 Python
python读取并定位excel数据坐标系详解
2019/06/26 Python
基于python实现ROC曲线绘制广场解析
2020/06/28 Python
悦木之源美国官网:Origins美国
2016/08/01 全球购物
法国太阳镜店:Sunglasses Shop
2016/08/27 全球购物
以工厂直接定价的传奇性能:Ben Hogan Golf
2019/01/04 全球购物
巴黎欧莱雅法国官网:L’Oreal Paris
2019/04/30 全球购物
德国购买踏板车网站:Microscooter
2019/10/14 全球购物
正宗的澳大利亚Ugg靴子零售商:UGG Express
2020/04/19 全球购物
销售会计工作职责
2013/12/02 职场文书
创先争优活动方案
2014/02/12 职场文书
小学语文国培感言
2014/03/04 职场文书
预备党员公开承诺书
2014/05/28 职场文书
2014大学班主任工作总结
2014/11/08 职场文书
实习护士自荐信
2015/03/25 职场文书
安全员岗位职责范本
2015/04/11 职场文书
农村党员干部承诺书
2015/05/04 职场文书