async+队列queue.Queue()
import queue
import time
import random
import threading
import asyncio
import logging
logging.basicConfig(level = logging.INFO,format = '%(asctime)s - %(levelname)s -->%(funcName)s at line %(lineno)d: \n %(message)s')
log= logging.getLogger()
q_init = queue.Queue(maxsize=5)
async def jobs(item):
time.sleep(random.randint(1,15))
status = random.randint(0, 1)
if status == 0:
return ("success",item)
else:
return ("failed",item) async def do_work(item):
logging.info("do something %s,time start %s" % (item, time.asctime()))
a =await jobs(item)
return a def ma(checker):
new_loop = asyncio.new_event_loop()
asyncio.set_event_loop(new_loop)
loop = asyncio.get_event_loop()
task = asyncio.ensure_future(do_work(checker))
loop.run_until_complete(asyncio.wait([task]))
loop.close()
st = task.result()
print(st)
return st def worker_consumer(q_init):
while True:
if q_init.empty():
logging.info("queue is empty stop current thread worker by break " )
break
checker = q_init.get()
st=ma(checker)
if st[0] in ["success", "failed"]:
logging.info("%s task finished status is %s" % (st[1],st[0]))
q_init.task_done() def producer():
item = 1
while item:
q_init.put(item)
item += 1
if item > 50:
break if __name__ == '__main__':
producer = [threading.Thread(target=producer)]
consumer = [threading.Thread(target=worker_consumer, args=(q_init,)) for i in range(5)]
consumer_pool = []
p_pool=[]
for p in producer:
p.start()
for k in consumer:
k.start()
consumer_pool.append(k)
for m in consumer:
m.join()
q_init.join()
结果:
2019-12-17 12:39:37,845 - INFO -->worker_consumer at line 40:
3 task finished status is failed
2019-12-17 12:39:38,844 - INFO -->worker_consumer at line 40:
1 task finished status is failed
2019-12-17 12:39:39,858 - INFO -->worker_consumer at line 40:
6 task finished status is success
2019-12-17 12:39:40,846 - INFO -->worker_consumer at line 40:
4 task finished status is success
2019-12-17 12:39:40,854 - INFO -->worker_consumer at line 40:
7 task finished status is success
2019-12-17 12:39:41,847 - INFO -->worker_consumer at line 40:
5 task finished status is success
2019-12-17 12:39:42,865 - INFO -->worker_consumer at line 40:
9 task finished status is success
2019-12-17 12:39:45,854 - INFO -->worker_consumer at line 40:
11 task finished status is success
2019-12-17 12:39:49,861 - INFO -->worker_consumer at line 40:
8 task finished status is failed
2019-12-17 12:39:49,868 - INFO -->worker_consumer at line 40:
12 task finished status is failed
2019-12-17 12:39:50,847 - INFO -->worker_consumer at line 40:
2 task finished status is success
2019-12-17 12:39:55,860 - INFO -->worker_consumer at line 40:
10 task finished status is success
2019-12-17 12:39:57,856 - INFO -->worker_consumer at line 40:
16 task finished status is failed
2019-12-17 12:39:59,861 - INFO -->worker_consumer at line 40:
13 task finished status is failed
2019-12-17 12:40:02,867 - INFO -->worker_consumer at line 40:
19 task finished status is failed
2019-12-17 12:40:02,874 - INFO -->worker_consumer at line 40:
15 task finished status is failed
2019-12-17 12:40:03,876 - INFO -->worker_consumer at line 40:
14 task finished status is success
2019-12-17 12:40:05,867 - INFO -->worker_consumer at line 40:
17 task finished status is success
2019-12-17 12:40:07,873 - INFO -->worker_consumer at line 40:
20 task finished status is success
2019-12-17 12:40:10,863 - INFO -->worker_consumer at line 40:
18 task finished status is success
2019-12-17 12:40:11,875 - INFO -->worker_consumer at line 40:
23 task finished status is failed
2019-12-17 12:40:12,886 - INFO -->worker_consumer at line 40:
22 task finished status is success
2019-12-17 12:40:14,881 - INFO -->worker_consumer at line 40:
26 task finished status is success
2019-12-17 12:40:16,890 - INFO -->worker_consumer at line 40:
28 task finished status is success
2019-12-17 12:40:17,881 - INFO -->worker_consumer at line 40:
21 task finished status is failed
2019-12-17 12:40:20,869 - INFO -->worker_consumer at line 40:
25 task finished status is failed
2019-12-17 12:40:20,880 - INFO -->worker_consumer at line 40:
24 task finished status is failed
2019-12-17 12:40:24,896 - INFO -->worker_consumer at line 40:
27 task finished status is failed
2019-12-17 12:40:28,891 - INFO -->worker_consumer at line 40:
29 task finished status is failed
2019-12-17 12:40:29,875 - INFO -->worker_consumer at line 40:
31 task finished status is success
2019-12-17 12:40:31,884 - INFO -->worker_consumer at line 40:
30 task finished status is failed
2019-12-17 12:40:31,897 - INFO -->worker_consumer at line 40:
34 task finished status is success
2019-12-17 12:40:31,905 - INFO -->worker_consumer at line 40:
33 task finished status is failed
2019-12-17 12:40:32,883 - INFO -->worker_consumer at line 40:
32 task finished status is failed
2019-12-17 12:40:32,891 - INFO -->worker_consumer at line 40:
36 task finished status is failed
2019-12-17 12:40:36,894 - INFO -->worker_consumer at line 40:
39 task finished status is success
2019-12-17 12:40:38,880 - INFO -->worker_consumer at line 40:
35 task finished status is failed
2019-12-17 12:40:38,911 - INFO -->worker_consumer at line 40:
38 task finished status is success
2019-12-17 12:40:39,894 - INFO -->worker_consumer at line 40:
40 task finished status is failed
2019-12-17 12:40:40,897 - INFO -->worker_consumer at line 40:
41 task finished status is success
2019-12-17 12:40:44,902 - INFO -->worker_consumer at line 40:
44 task finished status is success
2019-12-17 12:40:45,915 - INFO -->worker_consumer at line 40:
46 task finished status is success
2019-12-17 12:40:46,886 - INFO -->worker_consumer at line 40:
42 task finished status is failed
2019-12-17 12:40:46,901 - INFO -->worker_consumer at line 40:
37 task finished status is success
2019-12-17 12:40:48,895 - INFO -->worker_consumer at line 40:
48 task finished status is failed
2019-12-17 12:40:49,902 - INFO -->worker_consumer at line 40:
45 task finished status is success
2019-12-17 12:40:49,902 - INFO -->worker_consumer at line 35:
queue is empty stop current thread worker by break
2019-12-17 12:40:50,922 - INFO -->worker_consumer at line 40:
47 task finished status is success
2019-12-17 12:40:50,922 - INFO -->worker_consumer at line 35:
queue is empty stop current thread worker by break
2019-12-17 12:40:51,929 - INFO -->worker_consumer at line 40:
43 task finished status is success
2019-12-17 12:40:51,930 - INFO -->worker_consumer at line 35:
queue is empty stop current thread worker by break
2019-12-17 12:40:52,900 - INFO -->worker_consumer at line 40:
50 task finished status is failed
2019-12-17 12:40:52,900 - INFO -->worker_consumer at line 35:
queue is empty stop current thread worker by break
2019-12-17 12:40:59,905 - INFO -->worker_consumer at line 40:
49 task finished status is success
2019-12-17 12:40:59,905 - INFO -->worker_consumer at line 35:
queue is empty stop current thread worker by break Process finished with exit code 0
async+队列queue.Queue()的更多相关文章
- 【c#】队列(Queue)和MSMQ(消息队列)的基础使用
首先我们知道队列是先进先出的机制,所以在处理并发是个不错的选择.然后就写两个队列的简单应用. Queue 命名空间 命名空间:System.Collections,不在这里做过多的理论解释,这个东西非 ...
- python中利用队列asyncio.Queue进行通讯详解
python中利用队列asyncio.Queue进行通讯详解 本文主要给大家介绍了关于python用队列asyncio.Queue通讯的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细 ...
- Nodejs事件引擎libuv源码剖析之:高效队列(queue)的实现
声明:本文为原创博文,转载请注明出处. 在libuv中,有一个只使用简单的宏封装成的高效队列(queue),现在我们就来看一下它是怎么实现的. 首先,看一下queue中最基本的几个宏: typede ...
- Python_Day_05 计数器(counter),有序字典(OrderDict),默认字典(defaultdict),可命名元祖(namedtuple),双向队列(deque),单项队列(deuqe.Queue)
Counter(计数器) 是一个字典的子类,存储形式同样为字典,其中存储的键为字典的元素,值为元素出现的次数,在使用之前我们需要先导入文件 import collections 初始化一个计数器 im ...
- 计数器(counter),有序字典(OrderDict),默认字典(defaultdict),可命名元祖(namedtuple),双向队列(deque),单项队列(deuqe.Queue)
Python_Day_05 计数器(counter),有序字典(OrderDict),默认字典(defaultdict),可命名元祖(namedtuple),双向队列(deque),单项队列(deuq ...
- Berkeley DB的数据存储结构——哈希表(Hash Table)、B树(BTree)、队列(Queue)、记录号(Recno)
Berkeley DB的数据存储结构 BDB支持四种数据存储结构及相应算法,官方称为访问方法(Access Method),分别是哈希表(Hash Table).B树(BTree).队列(Queue) ...
- jQuery源代码学习之七—队列模块queue
一.jQuery种的队列模块 jQuery的队列模块主要是为动画模块EFFECTS提供支持,(不过到现在为了支持动画队列的inprogress的出入队还是搞不太清楚),单独抽取出一个命名空间是为了使程 ...
- 纸上谈兵:队列(queue)
作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! 队列(queue)是一个简单而常见的数据结构.队列也是有序的元素集合.队列最大的特 ...
- python-Day3-set 集合-counter计数器-默认字典(defaultdict) -可命名元组(namedtuple)-有序字典(orderedDict)-双向队列(deque)--Queue单项队列--深浅拷贝---函数参数
上节内容回顾:C语言为什么比起他语言块,因为C 会把代码变异成机器码Pyhton 的 .pyc文件是什么python 把.py文件编译成的.pyc文件是Python的字节码, 字符串本质是 字符数组, ...
随机推荐
- 强网杯2018 - nextrsa - Writeup
强网杯2018 - nextrsa - Writeup 原文地址:M4x@10.0.0.55 所有代码均已上传至我的github 俄罗斯套娃一样的rsa题目,基本把我见过的rsa套路出了一遍,值得记录 ...
- Spring整合MyBatis案例练习笔记
需求: 用户登录 技术需求: Servlet+Spring+Mybatis+MVC+jsp+css+html+jquery 数据库设计: 用户表 Sql语句设计: select * from t_us ...
- git命令全景图
- 问题解决:局域网内,为啥别人ping不到我的IP
试着在本地搭建一个测试环境,成功后却发现同一局域网的同事根本访问不了,他们ping不到我的IP,这可咋整! 询问度娘后,我的问题得到了,以下是我的总结,如果解决不了你的问题,还请继续百度. 方法一:关 ...
- 题解【AcWing271】杨老师的照相排列
题面 经典的线性 \(\text{DP}\) . 设 \(dp_{a,b,c,d,e}\) 表示第 \(1\) 排有 \(a\) 个人,第 \(2\) 排有 \(b\) 个人, 第 \(3\) 排有 ...
- Unable to guess the mime type as no guessers are available (Did you enable the php_fileinfo extension?)
原因是没有开启php的php_fileinfo扩展,开启即可. 找到php.ini文件,搜索到php_fileinfo,去掉前面的分号,然后重启服务器apache.nginx下同理. extensio ...
- c数据结构 -- 线性表之 复杂的链式存储结构
复杂的链式存储结构 循环链表 定义:是一种头尾相接的链表(即表中最后一个结点的指针域指向头结点,整个链表形成一个环) 优点:从表中任一节点出发均可找到表中其他结点 注意:涉及遍历操作时,终止条件是判断 ...
- C++-HDU1394-Minimum Inversion Number[数据结构][树状数组]
给出0~n-1的一个排列,可以整体移动,求逆序对最小值 把数字num[i]的加入,等价于树状数组的第n-num[i]位加1 因为num[i]是第 (n-1)-num[i]+1=n-num[i]大的数字 ...
- python 批量编译 批量删除
把项目的py文件变异成pyc文件,好处是可以保护源码不泄露. 假如一个工程文件夹有1000个py文件,这个时候怎样快速处理 ? 两步走: ① py--->pyc python -m compi ...
- http断点续传的原理
——————————————先讲原理,如下:—————————————————— 举一个详细的例子: 一般场景,要访问的域名:www.jizhuomi.com/android,文件名为down.zip ...