Python 多处理锁列表

Python multiprocessing list of locks

我正在使用 multiprocessing.Array 模块在所有子进程之间共享一个非常大的数组。 数组可以是可变长度的。

我需要同步访问数组中的每个元素。所以,我不想在分别写入两个不同的索引时阻塞写入操作。我认为如果我在 multiprocessing.Array.

中使用默认值 (lock = True),就会发生这种情况

有没有办法让数组中的每个变量都有一个 lock/mutex?

提前致谢

正如@MisterMiyagi 所说,我可以将 Value 的列表传递给函数。下面是一个虚拟代码

import multiprocessing
import ctypes


def calc_square(numbers):
    for idx, n in enumerate(numbers):
        numbers[idx] = (idx)

if __name__ == "__main__":
    numbers = [multiprocessing.Value('d', 0.0) for i in range(100)]
    p = multiprocessing.Process(target = calc_square, args = (numbers,))

    p.start()
    p.join()

子进程会更新每个值,可以同步。