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()
子进程会更新每个值,可以同步。
我正在使用 multiprocessing.Array
模块在所有子进程之间共享一个非常大的数组。
数组可以是可变长度的。
我需要同步访问数组中的每个元素。所以,我不想在分别写入两个不同的索引时阻塞写入操作。我认为如果我在 multiprocessing.Array
.
有没有办法让数组中的每个变量都有一个 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()
子进程会更新每个值,可以同步。