以下代码直接双击运行没有问题,但是在IDLE里运行,就没有输出。在CMD里使用python 脚本名运行也没有问题。


import multiprocessing
 
def worker(num):
    print(f'worker  {num}')
    return
if __name__ == '__main__': 
    jobs = []
    for i in range(5):
        p = multiprocessing.Process(target = worker, args = (i,))
        jobs.append(p)
        p.start()
    input('Press Enter to exit')

具体原因参考:

Issue 13220: print function unable while multiprocessing.Process is being run – Python tracker

Issue 11820: idle3 shell os.system swallows shell command output – Python tracker

这个bug已经10年了,还没有修复。好消息是已经进入了Patch preview 阶段了。有时候不得不承认开源社区的效率很慢。

1 对 “Python 存在10年的bug有望被修复”的想法;

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据