运行此代码时,它只会在末尾打印出一个空白数组:
[]
那么,为什么它不附加值a或值b呢?
import multiprocessing as mu
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 = mu.Process(target=fn,args=(array_values,))
p.start()
proc.append(p)
for p in proc:
p.join()
z+=1
runInParallel(a,b)
print(array_values)
函数的期望最终输出:
['a','b','a','b','a','b','a','b','a','b','a','b']
提前感谢!
它没有字的原因是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)