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写asp详细讲解
Dec 16 Python
Python构造函数及解构函数介绍
Feb 26 Python
Python读取本地文件并解析网页元素的方法
May 21 Python
Django Rest framework之权限的实现示例
Dec 17 Python
Python远程视频监控程序的实例代码
May 05 Python
Django框架视图介绍与使用详解
Jul 18 Python
python3 使用Opencv打开USB摄像头,配置1080P分辨率的操作
Dec 11 Python
python 实现屏幕录制示例
Dec 23 Python
python实现无边框进度条的实例代码
Dec 30 Python
python切片作为占位符使用实例讲解
Feb 17 Python
python自动生成sql语句的脚本
Feb 24 Python
据Python爬虫不靠谱预测可知今年双十一销售额将超过6000亿元
Nov 11 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/08/21 PHP
PHP递归调用的小技巧讲解
2013/02/19 PHP
php二维数组按某个键值排序的实例讲解
2019/02/15 PHP
获取JavaScript用户自定义类的类名称的代码
2007/03/08 Javascript
Ext对基本类型的扩展 ext,extjs,format
2010/12/25 Javascript
JQuery实现简单验证码提示解决方案
2012/12/20 Javascript
Jquery绑定事件(bind和live的区别介绍)
2013/08/23 Javascript
详解JavaScript中的blink()方法的使用
2015/06/08 Javascript
Bootstrap入门教程一Hello Bootstrap初识
2017/03/02 Javascript
JavaScript Canvas绘制圆形时钟效果
2020/08/20 Javascript
socket.io学习教程之深入学习篇(三)
2017/04/29 Javascript
jQuery实现的点击按钮改变样式功能示例
2018/07/21 jQuery
关于layui表单中按钮自动提交的解决方法
2019/09/09 Javascript
阿望教你用vue写扫雷小游戏
2020/01/20 Javascript
vue中使用腾讯云Im的示例
2020/10/23 Javascript
vue 解决在微信内置浏览器中调用支付宝支付的情况
2020/11/09 Javascript
[01:07:13]TNC vs Pain 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/20 DOTA
python调用fortran模块
2016/04/08 Python
利用Python中SocketServer 实现客户端与服务器间非阻塞通信
2016/12/15 Python
scrapy爬虫完整实例
2018/01/25 Python
python中利用h5py模块读取h5文件中的主键方法
2018/06/05 Python
python:HDF和CSV存储优劣对比分析
2020/06/08 Python
凯伦·米莲女装网上商店:Karen Millen
2017/11/07 全球购物
巴西网上药店:Drogaria Araujo
2021/01/06 全球购物
经典优秀个人求职自荐信格式
2013/09/25 职场文书
八项规定整改措施
2014/02/12 职场文书
人力资源部经理助理岗位职责
2014/03/04 职场文书
副科竞争上岗演讲稿
2014/05/12 职场文书
红领巾广播站广播稿(3篇)
2014/09/20 职场文书
公司股份合作协议书
2014/12/07 职场文书
体育教师个人总结
2015/02/09 职场文书
2015年服务员个人工作总结
2015/05/27 职场文书
色戒观后感
2015/06/12 职场文书
提取视频中的音频 Python只需要三行代码!
2021/05/10 Python
Mysql实现主从配置和多主多从配置
2021/06/02 MySQL
vue实现省市区联动 element-china-area-data插件
2022/04/22 Vue.js