python异步任务队列示例
时间:2021-05-04 03:09:07
很多场景为了不阻塞,都需要异步回调机制。这是一个简单的例子,大家参考使用吧
#!/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,异步,队列
0
投稿
猜你喜欢
鼠标实现图片的渐有渐无
2013-06-30 02:49:10
windows及linux环境下永久修改pip镜像源的方法
2021-02-19 09:08:59
全透视:CSS Z-index 属性
2009-09-21 12:52:00
Go语言Grpc Stream的实现
2023-08-07 06:19:23
利用Python进行数据可视化的实例代码
2023-11-24 10:21:45
Python通用验证码识别OCR库ddddocr的安装使用教程
2021-11-04 21:21:27
轻松掌握SQL Server存储过程的命名标准
2009-01-15 13:14:00
javascript实现数独解法
2023-10-17 17:18:28
python 绘制场景热力图的示例
2022-01-22 07:03:21
如何从MySQL数据库表中检索数据
2008-11-01 17:08:00
PyTorch 迁移学习实践(几分钟即可训练好自己的模型)
2021-09-07 23:37:31
Python实现统计给定字符串中重复模式最高子串功能示例
2023-07-22 23:42:44
python接入使用百度翻译流程
2022-11-26 01:01:43
Python中OpenCV Tutorials 20 高动态范围成像的实现步骤
2022-04-02 07:24:20
django美化后台django-suit的安装配置操作
2021-12-19 23:13:25
J2EE基础应用:J2EE中SQL语句自动构造方法
2009-09-18 09:06:00
js选取多个或单个元素的实现代码(用class)
2023-08-24 16:51:29
python使用Random随机生成列表的方法实例
2021-08-12 12:08:54
Python之维度dim的定义及其理解使用方式
2021-06-10 12:33:04
使用BULK INSERT大批量导入数据 SQLSERVER
2012-01-05 19:26:36