python JoinableQueue在生产者消费者项目中的简单应用
class multiprocessing.JoinableQueue([maxsize])
JoinableQueue, a Queue subclass, is a queue which additionally has task_done() and join() methods.
task_done()- 
Indicate that a formerly enqueued task is complete. Used by queue consumers. For each
get()used to fetch a task, a subsequent call totask_done()tells the queue that the processing on the task is complete.If a
join()is currently blocking, it will resume when all items have been processed (meaning that atask_done()call was received for every item that had beenput()into the queue).Raises a
ValueErrorif called more times than there were items placed in the queue. 
join()- 
Block until all items in the queue have been gotten and processed.
The count of unfinished tasks goes up whenever an item is added to the queue. The count goes down whenever a consumer calls
task_done()to indicate that the item was retrieved and all work on it is complete. When the count of unfinished tasks drops to zero,join()unblocks.这是官网对JoinableQueue的概述,我们通过这个方法就可以实现我们自己的生产者消费者模型,具体的实现思路请看我的分析<<项目开发中使用并发模型常见问题的整理与思考>>
code如下:
import multiprocessing def printAll(queue, out_queue):
while 1:
t = queue.get()
print(t)
s = "生产{0}".format(t)
queue.task_done()
out_queue.put(s) if __name__ == "__main__":
queue = multiprocessing.JoinableQueue()
num_consumer = multiprocessing.cpu_count() * 2
out_queue = multiprocessing.Queue() for i in range(250):
queue.put(i) for _ in range(num_consumer):
p = multiprocessing.Process(target=printAll, args=(queue, out_queue))
p.start() queue.join() # 阻塞队列直到队列为空。
result = [] print("数量是: {}".format(out_queue.qsize())) while out_queue.qsize() != 0:
result.append(out_queue.get()) for i in result:
print(i)简单地实现了我要的结果,具体可以再项目中应用上。
 
python JoinableQueue在生产者消费者项目中的简单应用的更多相关文章
- Jwt在Java项目中的简单实际应用
		
1.什么是jwt 双方之间传递安全信息的简洁的.URL安全的表述性声明规范.JWT作为一个开放的标准(RFC 7519),定义了一种简洁的,自包含的方法用于通信双方之间以Json对象的形式安全的传递信 ...
 - 进程,线程,GIL,Python多线程,生产者消费者模型都是什么鬼
		
1. 操作系统基本知识,进程,线程 CPU是计算机的核心,承担了所有的计算任务: 操作系统是计算机的管理者,它负责任务的调度.资源的分配和管理,统领整个计算机硬件:那么操作系统是如何进行任务调度的呢? ...
 - python  进程锁 生产者消费者模型 队列 (进程其他方法,守护进程,数据共享,进程隔离验证)
		
#######################总结######### 主要理解 锁 生产者消费者模型 解耦用的 队列 共享资源的时候 是不安全的 所以用到后面的锁 守护进程:p.daem ...
 - joinablequeue模块       生产者消费者模型      Manager模块       进程池         管道
		
一.生产者消费者 主要是为解耦(借助队列来实现生产者消费者模型) import queue # 不能进行多进程之间的数据传输 (1)from multiprocessing import Queue ...
 - Python+Selenium进行UI自动化测试项目中,常用的小技巧1:读取excel表,转化成字典(dict)输出
		
从今天开始我将会把在项目中遇到的问题,以及常用的一些技巧来分享出来,以此来促进自己的学习和提升自己:更加方便我以后的查阅. 现在要说的是:用Python来读取excel表的数据,返回字典(dict), ...
 - 生产者消费者模式中条件判断是使用while而不是if
		
永远在循环(loop)里调用 wait 和 notify,不是在 If 语句现在你知道wait应该永远在被synchronized的背景下和那个被多线程共享的对象上调用,下一个一定要记住的问题就是,你 ...
 - Python+Selenium进行UI自动化测试项目中,常用的小技巧4:日志打印,longging模块(控制台和文件同时输出)
		
在前段时间,为了给项目中加入日志功能,就想到了 logging 模块,百度logging一大推,都是各种复制的,并没有找到自己想要的结果:我的目的很简单,就是:在把日志写入文件的同时在控制台输出,更加 ...
 - Python+Selenium进行UI自动化测试项目中,常用的小技巧3:写入excel表(python,xlsxwriter)
		
我们在项目中可能用到excel表生成,下面的代码就是对excel表的操作: import xlsxwriter import datetime class write_excel(): def __i ...
 - Python+Selenium进行UI自动化测试项目中,常用的小技巧2:读取配置文件(configparser,.ini文件)
		
在自动化测试项目中,可能会碰到一些经常使用的但 很少变化的配置信息,下面就来介绍使用configparser来读取配置信息config.ini 读取的信息(config.ini)如下: [config ...
 
随机推荐
- iOS7 CookBook精彩瞬间(一)property、selector细节、__unused
			
1.我们常常使用nonatomic,很多人只知道它的效率较高,却不知道其含义,其含义是非线程安全的,也就是说多线程修改时不加锁,可能出现多个线程先后修改而成为脏数据的情况. 2.unsafe_unre ...
 - 【编程练习】poj1068
			
Parencodings Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 24202 Accepted: 14201 De ...
 - linu下C语言之BMP图片操作编程(下)
			
前面提高了一个将BMP左转的程序,右转其实也是类似的操作,就不写了,这节,我们来实现,将一张BMP图进行灰度处理,代码贴上: #include <stdio.h> #include < ...
 - linux常用的压缩与解压缩命令
			
1.gzip 压缩 gzip 是压缩文件,压缩之后文件后缀为.gz 用法:gzip 选项 [文件] 2.gunzip 解压 这个命令与gzip的功能刚好相反,这个是解压. 用法 gunzip 选项 [ ...
 - JDK8帮助文档生成-笔记
			
JDK8 出来了,以前习惯了使用.CHM文件来查看API,现在想也这样,这里自己制作了一下,记录一下. 1.需要的工具: ①JD2CHM;②API文档③HTMLlHelper 遇到的问题主要是不知道去 ...
 - UNIX网络编程——基于UDP协议的网络程序
			
一.下图是典型的UDP客户端/服务器通讯过程 下面依照通信流程,我们来实现一个UDP回射客户/服务器: #include <sys/types.h> #include <sys/so ...
 - CoordinatorLayout 自定义Behavior并不难,由简到难手把手带你撸三款!
			
先来看看最终的效果~~ 本文同步至博主的私人博客wing的地方酒馆 嗯..一个是头像上移的 另一个是模仿UC浏览器的. (PД`q.)你不是说!有三款的吗,怎么只有两款!!!! 不要急嘛... 说了从 ...
 - Hibernate3 Criteria对象详解
			
1.序言 Hibernate框架是目前JavaEE软件开发的企业主流框架,学习Hibernate必然要掌握ORM(对象关系映射Object/Relation Mapping)的概念思想, Hibern ...
 - Spring MVC 入门示例讲解 -  howtodoinjava
			
在本例中,我们将使用Spring MVC框架构建一个入门级web应用程序.Spring MVC 是Spring框架最重要的的模块之一.它以强大的Spring IoC容器为基础,并充分利用容器的特性来简 ...
 - cd 命令的具体使用说明
			
cd 命令的具体使用说明