0
有人能解释为什么这代码冻结(挂起永远),的Python:多处理IMAP和动态创建的池冻结
import multiprocessing
def foo(x): return x
def main():
print(list(multiprocessing.Pool().imap(foo, iter([1, 2, 3]))))
main()
虽然这个变体做工精细,
import multiprocessing
def foo(x): return x
pool = multiprocessing.Pool()
def main():
print(list(pool.imap(foo, iter([1, 2, 3]))))
main()
与这一个,
import multiprocessing
def foo(x): return x
def main():
print(list(multiprocessing.Pool().map(foo, [1, 2, 3])))
main()
顺便提及,能够在非initializatio动态创建multiprocessing.Pool()在应用程序的n阶段,然后使用imap会非常有帮助。我尝试着在gdb
中逐步完成它,并且它似乎被冻结在PyThread_acquire_lock
......但是我觉得在这么低的级别上进行了非常奇怪的调试。