我正在尝试学习Python多处理,但是当我尝试从文档中运行以下示例代码时,什么也不会发生。什么都没有印刷,也不例外,没有任何东西。
from multiprocessing import Process
def f(name):
print('hello', name)
if __name__ == '__main__':
p = Process(target=f, args=('bob',))
p.start()
p.join()
但是,另一个示例的工作原理:
from multiprocessing import Pool
def f(x):
return x*x
if __name__ == '__main__':
with Pool(5) as p:
print(p.map(f, [1, 2, 3]))
我已经检查了一下是否是一个特定于环境的问题,现在我更加困惑了。如果我在空闲中显示的第一个示例,那就不起作用。如果我在命令提示符中的交互式解释器中运行它,它也无效。但是,如果我在带有命令提示符的同一代码的同一代码上运行.py文件,则可以使用。有人知道实际发生了什么吗?为什么运行相同的代码会产生不同的结果?
(如果很重要,我目前在Windows 10机器上(
闲置由于替换sys.stdout
和公司而具有异常怪异的行为;无论是否互动,您都可以得到一些奇怪的行为。
multiprocessing
通常在交互式解释器中运行不太好,尤其是在"叉仿真"无法真正模拟它的窗口中。
坚持在实际脚本中测试multiprocessing
相关内容。