0

我正在尝试使用 python 多处理并行化任务,但结果是当我需要将对象附加到列表时(具体来说是来自 iminuit 库的一个 minuit 对象),它会给出错误“......无法转换为 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:在非并行的情况下,很容易制作一个列表并附加这些对象,所以我不明白为什么通常你可以附加它但它在这里不起作用。

4

0 回答 0