仅使用标准库,您可以使用共享内存,在本例中是Array
存储和修改您的数组:
from multiprocessing import Pool, Array, Lock
lock = Lock()
my_array = [Array('i', [1, 2, 3], lock=lock),
Array('i', [4, 5, 6], lock=lock),]
让我建议您对程序进行一些修改:列出您需要对矩阵进行的所有更改的列表或时间表(为了清楚起见,我将使用namedtuple
),以及映射这些变化的函数。
Change = namedtuple('Change', 'row idx value')
scheduled_changes = [Change(0, 0, 2),
Change(0, 1, 2),
Change(1, 0 ,2),
Change(1, 1, 2)]
# or build the scheduled changes list in any other way like using
# for loops or list comprehensions...
def modify(change, matrix=my_array):
matrix[change.row][change.idx] = change.value
现在您可以使用Pool
将修改函数映射到更改:
pool = Pool(4)
pool.map(modify, scheduled_changes)
for row in my_array:
for col in row:
print(col, end=' ')
print()
# 2 2 3
# 2 2 6