鱼C论坛

 找回密码
 立即注册
查看: 2356|回复: 7

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

[复制链接]
发表于 2020-2-23 14:35:13 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
问题描述:
在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上运行,没有显示子进程打印的效果,入门学习遇到的问题,卡在这疑问挺久了,得发帖求助下大佬们!!!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-2-23 14:53:24 | 显示全部楼层
在IDLE上???
新建一个文件,后缀名为.py,然后把上面的代码复制进去试试
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-2-23 17:14:27 | 显示全部楼层
qiuyouzhi 发表于 2020-2-23 14:53
在IDLE上???
新建一个文件,后缀名为.py,然后把上面的代码复制进去试试

说错了哈,我的意思就是新建了一个.py的文件,然后代码在idle输出的效果显示不了子线程的打印结果
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-2-23 18:31:04 | 显示全部楼层
qiuyouzhi 发表于 2020-2-23 14:53
在IDLE上???
新建一个文件,后缀名为.py,然后把上面的代码复制进去试试

是否跟开发平台相关?我刚拿朋友的机子在VS code上测试了,可以打印子进程的效果
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

你用命令行运行试试
我这里用命令行没毛病
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-2-23 20:36:21 | 显示全部楼层
qiuyouzhi 发表于 2020-2-23 18:48
你用命令行运行试试
我这里用命令行没毛病

我这单独命令行也不行,版本:python 3.7.0
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 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完成测试,还是谢谢大神的帮助!!!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

OK
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-22 09:27

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表