在Python中循环不花费数组的值



运行此代码时,它只会在末尾打印出一个空白数组:

[]

那么,为什么它不附加值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)

相关内容

  • 没有找到相关文章