博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python 进程池Pool以及Queue的用法
阅读量:5211 次
发布时间:2019-06-14

本文共 1082 字,大约阅读时间需要 3 分钟。

import os,time,randomfrom multiprocessing import Pooldef task(name):	print('正在运行的任务:%s,PID:(%s)'%(name,os.getpid()))	start=time.time()	time.sleep(random.random()*10)	end=time.time()	print('任务:%s,用时:%0.2f 秒'%(name,(end-start)))if __name__=='__main__':	print('父进程ID:%s'%(os.getpid()))	p=Pool(4)	for i in range(5):		p.apply_async(task,args=(i,))	print('等待所有添加的进程运行完毕。。。')	p.close()#在join之前要先关闭进程池,避免添加新的进程	p.join()	print('End!!,PID:%s'% os.getpid())

  

 

 

 

进程间的通信

from multiprocessing import Process,Queueimport os,time,random#写数据的进程def write(q):	print('写进程PID:%s'% os.getpid())	for value in ['I','Love','Python']:		print('放入队列:%s,时间:%s'% (value,time.time()))		q.put(value)		time.sleep(random.random())#读数据的进程:def read(q):	print('读进程PID:%s'% (os.getpid()))	while True:		value=q.get(True)		print('获得数据:%s,时间:%s'% (value,time.time()))if __name__=='__main__':	#父进程创建Queue,并传给各个子进程	q=Queue()	pw=Process(target=write,args=(q,))	pr=Process(target=read,args=(q,))	pw.start()	pr.start()	pw.join()	pr.terminate()#pr进程是死循环,无法等待其结束,只能强行终止

  数据输出效果:

 

转载于:https://www.cnblogs.com/mahailuo/p/8471254.html

你可能感兴趣的文章
Maximum Product Subarray
查看>>
solr相关配置翻译
查看>>
通过beego快速创建一个Restful风格API项目及API文档自动化(转)
查看>>
解决DataSnap支持的Tcp长连接数受限的两种方法
查看>>
Synchronous/Asynchronous:任务的同步异步,以及asynchronous callback异步回调
查看>>
ASP.NET MVC5 高级编程-学习日记-第二章 控制器
查看>>
Hibernate中inverse="true"的理解
查看>>
高级滤波
查看>>
使用arcpy添加grb2数据到镶嵌数据集中
查看>>
[转载] MySQL的四种事务隔离级别
查看>>
QT文件读写
查看>>
C语言小项目-火车票订票系统
查看>>
15.210控制台故障分析(解决问题的思路)
查看>>
BS调用本地应用程序的步骤
查看>>
常用到的多种锁(随时可能修改)
查看>>
用UL标签+CSS实现的柱状图
查看>>
mfc Edit控件属性
查看>>
Linq使用Join/在Razor中两次反射取属性值
查看>>
[Linux]PHP-FPM与NGINX的两种通讯方式
查看>>
Java实现二分查找
查看>>