Добавление специального объекта в один и тот же список из разных процессов с использованием многопроцессорной обработки. - PullRequest
0 голосов
/ 27 апреля 2020

Я пытаюсь распараллелить задачу, используя python многопроцессорную обработку, но это приводит к тому, что когда мне нужно добавить объект в список (в конкретном одном объекте minuit из библиотеки iminuit) выдается ошибка "... не могу быть преобразованным в Python объект для травления ". Я показываю здесь код, который обычно работает, но не с этими объектами.

from multiprocessing import Process, Manager
from iminuit import Minuit


something=Minuit(lambda x: x) #notice that here object() or any str will work.

def dothing(L, i):  # the managed list `L` passed explicitly.
    L.append(something)

if __name__ == "__main__":
    with Manager() as manager:
        L = manager.list() 
        processes = []
        for i in range(5):
            p = Process(target=dothing, args=(L,i))  # Passing the list
            p.start()
            processes.append(p)
        for p in processes:
            p.join()
        print L

Чтение документации по многопроцессорности Я не нашел правильного способа сделать это. Заранее спасибо.

pd: в непараллельном случае легко составить список и добавить этот объект, поэтому я не понимаю, почему обычно вы можете добавить его, но здесь это не работает.

...