微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Python popen 从进程读取数据,但标准输出下降

如何解决Python popen 从进程读取数据,但标准输出下降

我正在使用生成getBytes 从进程 STDOUT 中检索字节(STDOUT 的输出速率约为 5MB/s)

问题是,当我的程序花时间处理这个(几秒钟)时,部分 STDOUT 似乎已被删除。 我曾尝试在 subprocess.Popen 调用中将 bufsize 设置为一个大值 (100000000),但这似乎并没有解决问题。

def getBytes():
    # command = "command that outputs data"
    process = subprocess.Popen(command,stdout=subprocess.PIPE)

    for c in iter(lambda: process.stdout.read(1),b''):
        yield(c)

mybytes = getBytes()
buffer = []
for b in mybytes:
    buffer.append(b)
    if len(buffer)>=MIN_BUFFER:
        # some processing that may take a few seconds
        # after that,drops in STDOUT
        buffer = []

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。