【发布时间】:2018-08-31 07:35:30
【问题描述】:
我希望将不同的进程附加到同一个列表中:
import multiprocessing as mp
def foo(n,L):
a
L.append(n)
pool = mp.Pool(processes=2)
manager = mp.Manager()
L= manager.list()
l=[[1,2],[3,4],[5,6],[7,8]]
[pool.apply_async(foo, args=[n,L]) for n in l]
然而,
>> print L
[]
我做错了什么?
编辑:问题是我的原始代码中有回溯,它没有打印在屏幕上。例如,如果我运行上面的代码并且 a 不存在,则不会评估其余代码,但不会引发异常。有没有办法进行多处理打印回溯以便我可以调试代码?
【问题讨论】:
-
[pool.apply_async(foo, args=[n,L]) for n in l]得到[<multiprocessing.pool.ApplyResult at 0x7ff72859c150>, <multiprocessing.pool.ApplyResult at 0x7ff72859c410>, <multiprocessing.pool.ApplyResult at 0x7ff72859c510>, <multiprocessing.pool.ApplyResult at 0x7ff72859c590>],print L得到[[1, 2], [3, 4], [5, 6], [7, 8]]`, -
如果您将多处理代码放在“主”子句中,则多处理在更多系统上的工作更可靠,就像文档中的所有示例一样。 docs.python.org/3/library/…
-
看来问题是我的代码中有错误但没有打印回溯。我已经编辑了我的问题
标签: python list append multiprocessing