我正在尝试通过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/

10-15 15:01