multiprocessing 多进程之间相互协调的方式有如下几种:
在多进程方式并发编程中,
三者之间的区别主要在于管理的数据类型不同。
manager支持的类型:
from multiprocessing import Process, Manager
import os
import time
def jincheng1(dict):
print("子进程id:%s" % (os.getpid()))
time.sleep(1)
dict[os.getpid()] = "我子进程:"+str(os.getpid())
print("子进程id:%s下的dict内容:" % (os.getpid()),dict)
def jincheng2(dict):
print("子进程id:%s" % (os.getpid()))
time.sleep(1)
dict[os.getpid()] = "我子进程:"+str(os.getpid())
print("子进程id:%s下的dict内容:" % (os.getpid()),dict)
if __name__ == '__main__':
start = time.time()
index = 0
manager = Manager()
mDict = manager.dict()
ps_1 = Process(target=jincheng1, args=(mDict,))
ps_1.start()
ps_1.join()
ps_2 = Process(target=jincheng2, args=(mDict,))
ps_2.start()
ps_2.join()
print('字典里面的最终结果:')
for key in dict(mDict):
print("%s=%s" % (key, mDict[key]))
print('主进程运行时间:%s'%(time.time()-start))
输出结果:
D:\ceshi>python jincheng6.py
子进程id:40568
子进程id:40568下的dict内容: {40568: '我子进程:40568'}
子进程id:4912
子进程id:4912下的dict内容: {40568: '我子进程:40568', 4912: '我子进程:4912'}
字典里面的最终结果:
40568=我子进程:40568
4912=我子进程:4912
主进程运行时间:2.821425676345825
个人其他博客地址
简书:https://www.jianshu.com/u/d6960089b087
掘金:https://juejin.cn/user/2963939079225608
小钟同学 | 文 【原创】| QQ:308711822
1:本文相关描述主要是个人的认知和见解,如有不当之处,还望各位大佬指正。 2:关于文章内容,有部分内容参考自互联网整理,如有链接会声明标注;如没有及时标注备注的链接的,如有侵权请联系,我会立即删除处理哟。
原文作者:程序员小钟同学;如有侵权,请联系管理员删除。