我正在尝试通过POPEN获得进程的标准输出。
使用gevent 1.0,readline()和read()仍会阻塞进程并等待进程完成。
有什么线索吗?是的,我在高端和低端搜索了一个简单的解决方案。必须没有线程就可以,对吗?
最佳答案
import gevent
from gevent.subprocess import Popen, PIPE
def cron():
while True:
print("cron")
gevent.sleep(0.5)
g = gevent.spawn(cron)
def subp():
sub = Popen('sleep 1; ping www.google.com -c 2; sleep 5; uname', stdout=PIPE, shell=True)
while True:
s = sub.stdout.readline()
if s == "":
break
else:
print s.strip()
g.kill()
subp()
也可以检查此要点,以获取名为prun的工具:https://gist.github.com/zhangchunlin/05576572b628f5bf9d74
关于python - 从gevent-subprocess获取实时标准输出?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19497587/