进程间的通信
2021/7/7 7:04:50
本文主要是介绍进程间的通信,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
方式1 queue队列 先进先出
进程之间默认是没有关联的,进程间的通信就是解决这个问题
from multiprocessing import Queue, Process这是解决普通进程间的通信
from multiprocessing import Manager, Pool这是解决进程间的通信
queue是阻塞的
from multiprocessing import Queue, Process import os import time def write(q): for value in [1, 2, 3]: print("put %d to queue"%value) q.put(value) time.sleep(1) def read(q): while True: if not q.empty(): value = q.get() print("get %d from queue" % value) time.sleep(1) else: break if __name__ == "__main__": queue =Queue() pw = Process(target= write, args=(queue,)) ##这里就是把queue当作一个参数穿了进去。这样两个进程就和同一个queue相关联 pr = Process(target=read, args=(queue,)) pw.start() pw.join() pr.start() pr.join() print("complete") Result:
put 1 to queue
put 2 to queue
put 3 to queue
get 1 from queue
get 2 from queue
get 3 from queue
complete
进程池之间的通信
from multiprocessing import Manager, Pool import os import time def write(q): for value in [1, 2, 3]: print("put %d to queue"%value) q.put(value) time.sleep(1) def read(q): #while True: #if not q.empty(): #value = q.get() # print("get %d from queue" % value) # time.sleep(1) #else: #break
for value in range(q.qsize()): print("get %d from queue" % q.get())
if __name__ == "__main__": q = Manager().Queue() #使用Manager中的Queue来初始化 po = Pool() po.apply(write,(q,))#使用阻塞时创建进程, 这样就不用在read中使用死循环了 po.apply(read,(q,)) po.close() po.join() print("complete")
这篇关于进程间的通信的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2025-01-08如何用关键链方法突破项目管理瓶颈?
- 2025-01-08电商人必看!6 款提升团队协作与客户满意度软件!
- 2025-01-08电商团队管理混乱?快用这 6 款软件优化协作流程!
- 2025-01-08短剧制作效率低?试试这5款任务管理工具
- 2025-01-08高效应对电商高峰,6 款团队协作软件大揭秘!
- 2025-01-08为什么外贸人都爱上了在线协作工具?
- 2025-01-08提升工作效率,从这些任务管理工具开始
- 2025-01-08新年电商订单暴增,必备的 6 款可视化协作办公软件有哪些?
- 2025-01-08短剧制作经理必备技能与工具全解析
- 2025-01-08在线协作让年货大促轻松应对!