我正在尝试使用 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:在非并行的情况下,很容易制作一个列表并附加这些对象,所以我不明白为什么通常你可以附加它但它在这里不起作用。