python subprocess popen获取进程状态_python 使用subprocess.Popen步骤创建子进程后子进程不结束...

python 使用subprocess.Popen方法创建子进程后子进程不结束首先,运行环境是Linux

有两个脚本a.py和b.py

在a.py中使用如下语句调用b.py

p = subprocess.Popen(['/usr/bin/python', 'b.py'], stdout=subprocess.PIPE)

如果开启了子进程后a.py中没使用p.wait()来等待子进程结束,而是使用命令行:

ps -ef | grep python | grep b.py | grep -v grep | wc -l

来检查进程是否结束

请问,在这种情况下出现了当b.py运行时间过长(半小时以上)时,它不会正常结束掉,导致a.py一直挂起无法结束,是什么原因呢?

subprocess.Popen

子进程不结束

分享到:

------解决方案--------------------如果子进程输出很多数据,调用communicate()等待,或者先前定向到一个文件,若不处理时间久了可能缓存塞满了卡住...------解决方案--------------------如果你用了 stdout=subprocess.PIPE,就用communicate() 释放缓存,wait反而不重要

------解决方案--------------------引用:Quote: 引用:

看看回帖大多是“如果...”,“应该...”。一共有a,b两个文件,看起来都不复杂,为什么不直接贴出代码?避免大家猜来猜去。

辛苦大家了,但是代码是公司的业务代码,不好上传的,见谅。

做一个与公司业务无关的测试代码。把有问题的代码孤立出来的过程,也是在debug。比如如你所说,b.py只是sleep就会出问题,就已经把b简化到和公司业务无关了。a.py中启动b的代码有了,只差循环调用ps的部分了,这也应该是业务无关的。------解决方案--------------------引用:如果子进程输出很多数据,调用communicate()等待,或者先前定向到一个文件,若不处理时间久了可能缓存塞满了卡住...

+1

楼主需要的是这个.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值