运行此代码时,它仅在末尾打印出一个空白数组:[]那么为什么它不附加值a或值b呢?import multiprocessing as muarray_values=[]def a(array): array.append('a')def b(array): array.append('b')def runInParallel(*fns): z=0 while z<6: if __name__=='__main__': proc = [] for fn in fns: p = mu.Process(target=fn,args=(array_values,)) p.start() proc.append(p) for p in proc: p.join() z+=1runInParallel(a,b)print(array_values)期望的函数最终输出:['a','b','a','b','a','b','a','b','a','b','a','b']提前致谢!
1 回答
墨色风雨
TA贡献1853条经验 获得超6个赞
它不说话的原因是因为multiprocessing
不使用共享内存。
您可以使用以下代码来获取所需的输出(它使用threading
共享内存):
import threading
array_values = []
def a(array):
array.append('a')
def b(array):
array.append('b')
def runInParallel(*fns):
z = 0
while z < 6:
if __name__ == '__main__':
proc = []
for fn in fns:
p = threading.Thread(target=fn, args=(array_values,))
p.start()
proc.append(p)
for p in proc:
p.join()
z += 1
runInParallel(a, b)
print(array_values)
添加回答
举报
0/150
提交
取消