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()的更多相关文章

  1. 【c#】队列(Queue)和MSMQ(消息队列)的基础使用

    首先我们知道队列是先进先出的机制,所以在处理并发是个不错的选择.然后就写两个队列的简单应用. Queue 命名空间 命名空间:System.Collections,不在这里做过多的理论解释,这个东西非 ...

  2. python中利用队列asyncio.Queue进行通讯详解

    python中利用队列asyncio.Queue进行通讯详解 本文主要给大家介绍了关于python用队列asyncio.Queue通讯的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细 ...

  3. Nodejs事件引擎libuv源码剖析之:高效队列(queue)的实现

     声明:本文为原创博文,转载请注明出处. 在libuv中,有一个只使用简单的宏封装成的高效队列(queue),现在我们就来看一下它是怎么实现的. 首先,看一下queue中最基本的几个宏: typede ...

  4. Python_Day_05 计数器(counter),有序字典(OrderDict),默认字典(defaultdict),可命名元祖(namedtuple),双向队列(deque),单项队列(deuqe.Queue)

    Counter(计数器) 是一个字典的子类,存储形式同样为字典,其中存储的键为字典的元素,值为元素出现的次数,在使用之前我们需要先导入文件 import collections 初始化一个计数器 im ...

  5. 计数器(counter),有序字典(OrderDict),默认字典(defaultdict),可命名元祖(namedtuple),双向队列(deque),单项队列(deuqe.Queue)

    Python_Day_05 计数器(counter),有序字典(OrderDict),默认字典(defaultdict),可命名元祖(namedtuple),双向队列(deque),单项队列(deuq ...

  6. Berkeley DB的数据存储结构——哈希表(Hash Table)、B树(BTree)、队列(Queue)、记录号(Recno)

    Berkeley DB的数据存储结构 BDB支持四种数据存储结构及相应算法,官方称为访问方法(Access Method),分别是哈希表(Hash Table).B树(BTree).队列(Queue) ...

  7. jQuery源代码学习之七—队列模块queue

    一.jQuery种的队列模块 jQuery的队列模块主要是为动画模块EFFECTS提供支持,(不过到现在为了支持动画队列的inprogress的出入队还是搞不太清楚),单独抽取出一个命名空间是为了使程 ...

  8. 纸上谈兵:队列(queue)

    作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! 队列(queue)是一个简单而常见的数据结构.队列也是有序的元素集合.队列最大的特 ...

  9. python-Day3-set 集合-counter计数器-默认字典(defaultdict) -可命名元组(namedtuple)-有序字典(orderedDict)-双向队列(deque)--Queue单项队列--深浅拷贝---函数参数

    上节内容回顾:C语言为什么比起他语言块,因为C 会把代码变异成机器码Pyhton 的 .pyc文件是什么python 把.py文件编译成的.pyc文件是Python的字节码, 字符串本质是 字符数组, ...

随机推荐

  1. mybatis-plus - MybatisPlusAutoConfiguration

    mybatis 的通用maper, 其实有很多, mybatis-plus 算是其中做的比较好的一款了. 这里就来看一下 mybatis-plus 是怎么实现这个通用mapper功能的. 一. Bas ...

  2. 在docker上部署centos

    1.查找镜像源$ docker search centosNAME DESCRIPTION STARS OFFICIALcentos The official build of CentOS. 385 ...

  3. range()用法

    来源:http://www.cnblogs.com/wangwp/p/4535299.html 例子:http://www.cnblogs.com/hongten/p/hongten_python_r ...

  4. java 字符+操作,字符串+操作

    字符额 “+” 操作 是拿字符在计算机底层对应的数值来进行计算的 ‘A’ = 65 A-Z是连续的 'a' = 97 a-z是连续的 '0' = 48 0-9是连续的 算数表达式中包含多个基本数据类型 ...

  5. ORA-01476: 除数为 0

    假设是a/bdecode(b,0,null,a/b) 这样如果b为0,输出null,不为0输出a/b decode():将查询结果翻译成其他值,类似三目运算符 比较1个参数时      decode( ...

  6. logging日志模块_python

    一.logging模块 1.功能 logging模块是Python内置的标准模块,主要用于输出运行日志,可以设置输出日志的等级.日志保存路径.日志文件回滚等:相比print,具备如下优点: 可以通过设 ...

  7. 题解【洛谷P5958】[POI2017]Sabotaż

    题面 考虑树形 \(\text{DP}\). 设 \(dp_i\) 为使 \(i\) 变成叛徒的最大值,同时 \(dp_i\) 也是使 \(i\) 不变成叛徒的最小值. 然后考虑如何转移状态. 如果 ...

  8. Linux下基于PAM机制的USB Key的制作

    摘自:https://server.zzidc.com/fwqpz/157.html USB Key这个概念最早是由加密锁厂家提出来的,加密锁是用来防止软件盗版的硬件产品,加密锁的概念是使安装在计算机 ...

  9. 小匠第二周期打卡笔记-Task04

    一.机器翻译及相关技术 机器翻译(MT):将一段文本从一种语言自动翻译为另一种语言,用神经网络解决这个问题通常称为神经网络翻译(NMT). 主要特征:输出是单词序列而不是单个单词.输出序列的长度可能与 ...

  10. protel99se无法添加库的解决方法

    protel99se是很老也很实用的的一门电类专业需要用到的软件,开发时面向XP,对于win7来说存在一定的不兼容性,导致无法添加新的库,本经验为此介绍解决方法.最全,末尾解决win7 32bit 6 ...