Python 多处理在.get()之后停止
我试图理解python中的Python 多处理在.get()之后停止,python,multiprocessing,python-multiprocessing,Python,Multiprocessing,Python Multiprocessing,我试图理解python中的多处理如何工作,并且遇到了一些问题。 例如: import multiprocessing def func(): return 1 p = multiprocessing.Pool() result = p.apply_async(func).get() 调用.get()函数时,代码被卡住了。我做错了什么?如果 因此,现在您的代码必须如下所示 import multiprocessing def func(): return 1 if __n
多处理如何工作,并且遇到了一些问题。
例如:
import multiprocessing
def func():
return 1
p = multiprocessing.Pool()
result = p.apply_async(func).get()
调用.get()
函数时,代码被卡住了。我做错了什么?如果
因此,现在您的代码必须如下所示
import multiprocessing
def func():
return 1
if __name__ == "__main__":
p = multiprocessing.Pool()
result = p.apply_async(func).get()
如果将其作为导入调用,将导致新进程的无限序列。并将它们添加到
if
块中,因为if
语句在导入期间不会执行。我没有足够的详细信息来确切知道问题所在。
但我有一个很强的猜测,那就是
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()
告诉我它是否有效:)您使用的是什么操作系统?请参阅多处理中的主模块安全导入。您需要get()做什么?试着删除它,看看它是否工作。如果操作系统是Windows,你只需要这个,这就是为什么我问他们使用的是什么操作系统