Python多重处理无法将示例代码打印到stdout

问题描述

我正在完全从Python multiprocessing Process documentation复制此代码

from multiprocessing import Process

def f(name):
    print('hello',name)

if __name__ == '__main__':
    p = Process(target=f,args=('bob',))
    p.start()
    p.join()

我希望当它在IDLE中运行时,我会看到“ hello bob”回来了。相反,我什么也没得到。检查p变量显示正常退出代码

============= RESTART: C:/Users/Hoofran/Desktop/DemoMultiProcess.py ============
>>> p
<Process name='Process-1' pid=17268 parent=18116 stopped exitcode=0>
>>> 

这应该是多重处理,抑制stdout吗?如果是这样,为什么文档中没有提及?我在这里想念什么?

解决方法

这似乎是一个IDLE特定问题。多台计算机之间存在重复的问题。在IDLE python 3.8.3中运行不会打印任何行,但是可以按预期从命令行打印。

PS C:\Users\ryan.mcgrath\Desktop> cat .\simpleMultiprocessing.py
from multiprocessing import Process

def f(name):
    print('hello',name)

if __name__ == '__main__':
    p = Process(target=f,args=('bob',))
    p.start()
    p.join()


PS C:\Users\ryan.mcgrath\Desktop> python .\simpleMultiprocessing.py
hello bob
PS C:\Users\ryan.mcgrath\Desktop> python
Python 3.8.3 (tags/v3.8.3:6f8c832,May 13 2020,22:20:19) [MSC v.1925 32 bit (Intel)] on win32
Type "help","copyright","credits" or "license" for more information.
>>>