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 (将#修改为@)