为了账号安全,请及时绑定邮箱和手机立即绑定

在Python中循环不将值花费到数组

在Python中循环不将值花费到数组

皈依舞 2024-01-12 10:24:43
运行此代码时,它仅在末尾打印出一个空白数组:[]那么为什么它不附加值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)


查看完整回答
反对 回复 2024-01-12
  • 1 回答
  • 0 关注
  • 31 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信