在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']

提前致谢!


皈依舞
浏览 39回答 1
1回答

墨色风雨

它不说话的原因是因为multiprocessing不使用共享内存。您可以使用以下代码来获取所需的输出(它使用threading共享内存):import threadingarray_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 += 1runInParallel(a, b)print(array_values)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python