注册 登录
编程论坛 Python论坛

使用Manager实现多进程共享变量时,如果在主进程内不使用join(),为什么会报错?

lxj_0601 发布于 2021-04-06 11:34, 1744 次点击
使用Manager实现多进程共享变量时,如果在主进程内不使用join(),为什么会报错?

from multiprocessing import Process, Manager
def func(my_list, my_dict):
    my_list.append(10)
    my_list.append(11)
    my_dict['a'] = 1
    my_dict['b'] = 2

if __name__ == '__main__':
    manager = Manager()
    my_list = manager.list()
    my_dict = manager.dict()
    ls=[]
    for i in range(0, 2):
       p = Process(target=func,args=(my_list,my_dict))
       p.start()
       ls.append(p)
    # for p in ls:
    #     p.join()
    print(my_list)
3 回复
#2
fall_bernana2021-04-06 14:38
回复 楼主 lxj_0601
#报 AttributeError: 'ForkAwareLocal' object has no attribute 'connection' 的原因
#运行这段代码时,主进程执行完了,断开了连接,而子进程要连接,此时会报错
#所以可以用join(),让主进程等待子进程的结束
#3
sssooosss2021-04-12 08:36
共同学习
#4
asd1911557072021-04-20 15:34
共同学习
1