gpt4 book ai didi

python - 多处理共享变量不更新

转载 作者:行者123 更新时间:2023-11-30 22:42:48 24 4
gpt4 key购买 nike

我试图在使用多处理模块时更新共享变量(命名空间中的 numpy 数组)。但是,该变量没有更新,我不明白为什么。

下面是一个示例代码来说明这一点:

from multiprocessing import Process, Manager
import numpy as np

chunk_size = 15
arr_length = 1000
jobs = []
namespace = Manager().Namespace()
namespace.arr = np.zeros(arr_length)
nb_chunk = arr_length/chunk_size + 1


def foo(i, ns):
from_idx = chunk_size*i
to_idx = min(arr_length, chunk_size*(i+1))
ns.arr[from_idx:to_idx] = np.random.randint(0, 100, to_idx-from_idx)

for i in np.arange(nb_chunk):
p = Process(target=foo, args=(i, namespace))
p.start()
jobs.append(p)
for i in np.arange(nb_chunk):
jobs[i].join()

print namespace.arr[:10]

最佳答案

您无法在 Python 中跨进程共享内置对象,例如 listdict。为了在进程之间共享数据,Python's multiprocessing提供两种数据结构:

另请阅读:Exchanging objects between processes

关于python - 多处理共享变量不更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41985113/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com