646188709 发表于 2020-2-23 14:35:13

【求助】学习多进程时候遇到的问题-子进程没有效果

问题描述:
在Python中启动的第一个子进程,子进程没有打印效果(见下图)

代码清单:
import time
from multiprocessing import Process

def f(name):
    print('hello', name)
    print('我是子进程')

if __name__ == '__main__':
    p = Process(target=f, args=('bob',))
    p.start()
    time.sleep(1)
    print('执行主进程的内容了')
----------------------------------------------------

将以上代码在IDLE上运行,没有显示子进程打印的效果,入门学习遇到的问题,卡在这疑问挺久了,得发帖求助下大佬们!!!

qiuyouzhi 发表于 2020-2-23 14:53:24

在IDLE上???
新建一个文件,后缀名为.py,然后把上面的代码复制进去试试

646188709 发表于 2020-2-23 17:14:27

qiuyouzhi 发表于 2020-2-23 14:53
在IDLE上???
新建一个文件,后缀名为.py,然后把上面的代码复制进去试试

说错了哈,我的意思就是新建了一个.py的文件,然后代码在idle输出的效果显示不了子线程的打印结果

646188709 发表于 2020-2-23 18:31:04

qiuyouzhi 发表于 2020-2-23 14:53
在IDLE上???
新建一个文件,后缀名为.py,然后把上面的代码复制进去试试

{:10_243:}是否跟开发平台相关?我刚拿朋友的机子在VS code上测试了,可以打印子进程的效果

qiuyouzhi 发表于 2020-2-23 18:48:37

646188709 发表于 2020-2-23 18:31
是否跟开发平台相关?我刚拿朋友的机子在VS code上测试了,可以打印子进程的效果

你用命令行运行试试
我这里用命令行没毛病

646188709 发表于 2020-2-23 20:36:21

qiuyouzhi 发表于 2020-2-23 18:48
你用命令行运行试试
我这里用命令行没毛病

我这单独命令行也不行,版本:python 3.7.0

646188709 发表于 2020-2-23 21:24:10

qiuyouzhi 发表于 2020-2-23 18:48
你用命令行运行试试
我这里用命令行没毛病

IDLE不能显示子进程(调用Process的子进程)打印的信息。
问题原因:
原因:spyder使用的stdout和windows不支持forking,所以无法打印子进程内容。
The comments revealed that OP uses Windows as well as Spyder. Since Spyder redirects stdoutand Windows does not support forking, a new child process won't print into the Spyder console. This is simply due to the fact that stdout of the new child process is Python's vanilla stdout, which can also be found in sys.__stdout__.
解决办法1:直接把.py文件拖入cmd命令窗口,用cmd命令窗口运行Python程序
解决办法2:安装PyCharm,在PyCharm中运行
-------------------------------
通过网上查找得知,目前已经通过解决办法1完成测试,还是谢谢大神的帮助!!!

qiuyouzhi 发表于 2020-2-24 07:52:19

646188709 发表于 2020-2-23 21:24
IDLE不能显示子进程(调用Process的子进程)打印的信息。
问题原因:
原因:spyder使用的stdout和windo ...

OK
页: [1]
查看完整版本: 【求助】学习多进程时候遇到的问题-子进程没有效果