Я хотел бы изменить массив numpy в многопроцессорной функции. Поэтому я преобразовал его в manager.list и передал подпроцессу. Изменения (добавление), внесенные в подпроцесс, не вернулись к исходному списку. Он работает с другим списком, с которым я выполняю те же изменения, за исключением того факта, что базовый список не приходит из преобразованного массива.
Я ожидал [8] в строке 1 после обработки, но это не так т изменить. Кто-нибудь может помочь? Большое спасибо.
Вот код:
from multiprocessing import Process, Manager
import numpy as np
def f(L, L1):
row = L
row.append([4])
L = row
row1 = L1
row1.append([8])
L1 = row1
if __name__ == '__main__':
manager = Manager()
lst = manager.list()
lst.append([1])
lst.append([2])
lst.append([3])
print('lst main before: ', lst)
a = np.array([[5],[6]])
lst1 = manager.list()
lst1 = np.array(a).tolist()
lst1.append([7])
print('lst1 main before: ', lst1)
p = Process(target=f, args=(lst,lst1))
p.start()
p.join()
print('lst main after: ', lst)
print('lst1 main after: ', lst1)
Вывод
lst main before: [[1], [2], [3]]
lst1 main before: [[5], [6], [7]]
lst main after: [[1], [2], [3], [4]]
lst1 main after: [[5], [6], [7]]