我试图了解multiprocessing
在python中的工作方式,并遇到了一些问题。
这是示例:
import multiprocessing
def func():
return 1
p = multiprocessing.Pool()
result = p.apply_async(func).get()
调用.get()
函数时,代码被卡住了。我在做什么错了?
答案 0 :(得分:0)
您需要在if __name__ == "__main__":
所以现在您的代码必须类似于
import multiprocessing
def func():
return 1
if __name__ == "__main__":
p = multiprocessing.Pool()
result = p.apply_async(func).get()
如果这被称为导入,则将导致无限数量的新进程。并将它们添加到if
块中是可行的,因为在导入期间不会执行if
语句。
答案 1 :(得分:0)
我没有足够的细节来确切地了解问题所在。 但我确实有很强的猜测力,将这些行放进去:
p = multiprocessing.Pool()
result = p.apply_async(func).get()
函数内部将解决您的问题。
尝试一下:
import multiprocessing
def func():
return 1
def main():
p = multiprocessing.Pool()
result = p.apply_async(func).get()
print(result)
if __name__ == '__main__':
main()
告诉我是否可行:)