gpt4 book ai didi

Python 的多处理 map_async 在 Windows 上生成错误

转载 作者:太空宇宙 更新时间:2023-11-03 11:55:18 25 4
gpt4 key购买 nike

下面的代码在 Unix 上完美运行,但在 Windows 7 上生成一个 multiprocessing.TimeoutError(两个操作系统都使用 python 2.7)。

知道为什么吗?谢谢。

from multiprocessing import Pool

def increment(x):
return x + 1

def decrement(x):
return x - 1

pool = Pool(processes=2)
res1 = pool.map_async(increment, range(10))
res2 = pool.map_async(decrement, range(10))

print res1.get(timeout=1)
print res2.get(timeout=1)

最佳答案

您需要将实际的程序逻辑放在 if __name__ == '__main__': block 中。

在 Unixy 系统上,Python 进行 fork ,生成多个进程供其工作。 Windows 没有 fork 。 Python 必须启动一个新的解释器并重新导入所有模块。这意味着每个子进程都将重新导入您的主模块。对于您编写的代码,重新导入模块将导致每个新启动的进程启动自己的进程。

参见:http://docs.python.org/library/multiprocessing.html#windows

编辑这对我有用:

from multiprocessing import Pool

def increment(x):
return x + 1

def decrement(x):
return x - 1

if __name__ == '__main__':
pool = Pool(processes=2)
res1 = pool.map_async(increment, range(10))
res2 = pool.map_async(decrement, range(10))

print res1.get(timeout=1)
print res2.get(timeout=1)

关于Python 的多处理 map_async 在 Windows 上生成错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12465270/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com