问题描述
我正在完全从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.
>>>