多处理共享阵列/变量Windows在此过程中未更新

时间:2016-02-06 08:53:23

标签: python windows multithreading multiprocessing

我阅读有关共享阵列的各种帖子并在流程中更新: Sharing numpy arrays in python multiprocessing pool

由于某些原因,在Windows中,以下变量v根本没有更新我还将其命名为Global文件,代码文件通用,结果相同):

结果是零而不是50 * 10(即变量v根本没有更新......)

 import time
 from multiprocessing import Process, Value, Lock
 import multiprocessfunc as mpf #put the multi process function loop there

 if __name__ == '__main__':
     v = Value('i', 0)
     lock = Lock()
     procs = [Process(target=mpf.func, args=(v, lock)) for i in range(10)]

     for p in procs: p.start()
     for p in procs: p.join()

     print(v.value)

在multiprocessfunc文件中,我把这个:

 def func(val, lock):
     for i in range(50):
         time.sleep(0.01)
         with lock:
             val.value += 1

您如何看待这个?

更新:如果我使用pool.map返回平均值/总和值,则效果很好。 这是传递值/共享数组时的情况,进程没有更新全局变量....

我在设置共享数组时遇到了同样的问题。数组未更新。

0 个答案:

没有答案