因为我要更新luoxis框架,所以趁机学了multiprocessing多进程
斗智斗勇的过程中我看的是一篇文章搞定Python多进程(全) – 知乎
说实话这个模块不难,但是很灵性,特别对于我
我看完了教程上的代码,开始自己写,在没有用数据共享的时候,我没有写if __name__ == ‘__main__’:的习惯,然后我写下了下面的代码
from multiprocessing import Process, Manager
def fun1(dic,lis,index,dic2):
dic2.append('a')
dic[index] = 'a'
dic['2'] = 'b'
lis.append(index) #[0,1,2,3,4,0,1,2,3,4,5,6,7,8,9]
with Manager() as manager:
dic = manager.dict()#注意字典的声明方式,不能直接通过{}来定义
l = manager.list(range(5))#[0,1,2,3,4]
dic2 = manager.list()
process_list = []
for i in range(10):
p = Process(target=fun1, args=(dic,l,i,dic2))
p.start()
process_list.append(p)
for res in process_list:
res.join()
print(dic)
print(l)
print(dic2)
多次运行多次报错,到处改都改不好,但是我也以为写if __name__ == ‘__main__’:程序入口是一个编码习惯,然后我就不写,折腾了半天
才发现哪里有点不对劲,我发现报错有if __name__ == ‘__main__’:,然后就去搜索了一下得到Python中if __name__==”__main__” 语句在调用多进程Process过程中的作用_ljwwjl的博客-CSDN博客
然后就把问题解决了