如何解决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.
>>>
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。