我阅读有关共享阵列的各种帖子并在流程中更新: 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返回平均值/总和值,则效果很好。 这是传递值/共享数组时的情况,进程没有更新全局变量....
我在设置共享数组时遇到了同样的问题。数组未更新。