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实现rest请求api示例
Apr 22 Python
Python可变参数函数用法实例
Jul 07 Python
Python下的Softmax回归函数的实现方法(推荐)
Jan 26 Python
Selenium鼠标与键盘事件常用操作方法示例
Aug 13 Python
Python的argparse库使用详解
Oct 09 Python
python getpass模块用法及实例详解
Oct 07 Python
python列表生成器迭代器实例解析
Dec 19 Python
如何基于python3和Vue实现AES数据加密
Mar 27 Python
pycharm下pyqt4安装及环境配置的教程
Apr 24 Python
keras 模型参数,模型保存,中间结果输出操作
Jul 06 Python
matplotlib基础绘图命令之errorbar的使用
Aug 13 Python
Python使用tkinter制作在线翻译软件
Feb 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
php fputcsv命令 写csv文件遇到的小问题(多维数组连接符)
2011/05/24 PHP
php页码形式分页函数支持静态化地址及ajax分页
2014/03/28 PHP
PHP中foreach()用法汇总
2015/07/02 PHP
php readfile()修改文件上传大小设置
2017/08/11 PHP
js判断输入是否为正整数、浮点数等数字的函数代码
2010/11/17 Javascript
JS操作图片(增,删,改) 例子
2013/04/17 Javascript
javascript实现获取字符串hash值
2015/05/10 Javascript
Jquery代码实现图片轮播效果(一)
2015/08/12 Javascript
AngularJS通过$http和服务器通信详解
2016/09/21 Javascript
vue.js绑定class和style样式(6)
2016/12/09 Javascript
angularjs实现下拉列表的选中事件示例
2017/03/03 Javascript
如何在AngularJs中调用第三方插件库
2017/05/21 Javascript
Angular表格神器ui-grid应用详解
2017/09/29 Javascript
从零开始搭建一个react项目开发
2018/02/09 Javascript
Angular 封装并发布组件的方法示例
2018/04/19 Javascript
Vue 项目分环境打包的方法示例
2018/08/03 Javascript
angularJs中$http获取后台数据的实例讲解
2018/08/08 Javascript
Vuejs开发环境搭建及热更新【推荐】
2018/09/07 Javascript
vue-router权限控制(简单方式)
2018/10/29 Javascript
Vue请求JSON Server服务器数据的实现方法
2018/11/02 Javascript
jquery中attr、prop、data区别与用法分析
2019/09/25 jQuery
JS使用正则表达式判断输入框失去焦点事件
2019/10/16 Javascript
Vue如何获取数据列表展示
2019/12/11 Javascript
vue随机验证码组件的封装实现
2020/02/19 Javascript
Javascript类型判断相关例题及解析
2020/08/26 Javascript
Python3中在Anaconda环境下安装basemap包
2018/10/21 Python
利用python提取wav文件的mfcc方法
2019/01/09 Python
OpenCV+Python--RGB转HSI的实现
2019/11/27 Python
Python处理mysql特殊字符的问题
2020/03/02 Python
a标签下载链接的简单实现
2016/09/13 HTML / CSS
Levi’s西班牙官方网站:李维斯,著名的牛仔裤品牌
2020/08/20 全球购物
PHP开发的一般流程
2013/08/13 面试题
给老师的检讨书
2014/02/11 职场文书
毕业晚会主持词
2014/03/24 职场文书
浅谈redis五大数据结构和使用场景
2021/04/12 Redis
如何打开Win11系统注册表编辑器?Win11注册表编辑器打开修复方法
2022/04/05 数码科技