如何实时获取Popen标准输出,而不是在Python中逐行获取?

如何实时获取Popen标准输出,而不是在Python中逐行获取?,python,Python,一般来说,这些问题有很多答案,但都局限于逐行阅读。例如,此代码: def execute(cmd): popen = subprocess.Popen(cmd, stdout=subprocess.PIPE, universal_newlines=True) for stdout_line in iter(popen.stdout.readline, ""): yield stdout_line popen.stdout.close() retu

一般来说,这些问题有很多答案,但都局限于逐行阅读。例如,此代码:

def execute(cmd):
    popen = subprocess.Popen(cmd, stdout=subprocess.PIPE, universal_newlines=True)
    for stdout_line in iter(popen.stdout.readline, ""):
        yield stdout_line

    popen.stdout.close()
    return_code = popen.wait()
    if return_code:
        raise subprocess.CalledProcessError(return_code, cmd)
但也有这样的输出线(点每隔10秒添加一次):

它们显示运行的任务的进度。我不想停止输出,直到行完成,然后才打印整个点行

因此,我需要在以下情况下
生成字符串

  • 我可以读取1024个符号块的输出(或整个输出)
  • 输出有任何符号超过1s(无论行是否结束)
但我不知道怎么做


p、 也许是个傻瓜。找不到。

如果您在Linux上,您可以在正在执行的命令前面使用,使其stdout变为无缓冲(即瞬时)。

如果您在Linux上,您可以在正在执行的命令前面使用,使其stdout变为无缓冲(即瞬时)。

模糊的东西。重定向到
StringIO
,但需要检查每个cpu时钟,以检查是否达到时间/大小。这是相关的用户/应用程序输出方法。如果没有任何输出,则浪费资源!您希望在每个buff或time上分离每个命令/应用程序输出,但每个通信都需要计时器
服务器
客户端
基,不能同时使用,因为丢失
RTC
东西(同步)模糊的东西。重定向到
StringIO
,但需要检查每个cpu时钟,以检查是否达到时间/大小。这是相关的用户/应用程序输出方法。如果没有任何输出,则浪费资源!您希望在每个buff或time上分离每个命令/应用程序输出,但每个通信都需要定时器
服务器
客户端
基,不能同时使用,因为丢失
RTC
东西(同步)
............................