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
......但是我覺得在這麼低的級別上進行了非常奇怪的調試。