python 使用subprocess.Popen步骤创建子进程后子进程不结束
python 使用subprocess.Popen方法创建子进程后子进程不结束首先,运行环境是Linux有两个脚本a.py和b.py在a.
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反而不重要
[解决办法]做一个与公司业务无关的测试代码。把有问题的代码孤立出来的过程,也是在debug。比如如你所说,b.py只是sleep就会出问题,就已经把b简化到和公司业务无关了。a.py中启动b的代码有了,只差循环调用ps的部分了,这也应该是业务无关的。
[解决办法]如果子进程输出很多数据,调用communicate()等待,或者先前定向到一个文件,若不处理时间久了可能缓存塞满了卡住...
+1
楼主需要的是这个.