Python Popen process.poll()截断输出

时间:2017-08-18 21:27:29

标签: python subprocess

我有一个在后台运行的进程,我正在捕获标准输出。

在读取流process.stdout.readline()的每一行后,我做了一个耗时的操作stdout_handler(current_time, stdout)(几毫秒)。这必须逐行完成。

如果我使用stdout_handler我的输出被截断大约250K ......但是,如果我删除stdout_handler我有完整的输出(~300K)......

代码如下。

    process = Popen(args, bufsize=1, stdout=PIPE, stderr=PIPE,
                    cwd=self.workdir, universal_newlines=True)

    rlist = [process.stdout, process.stderr]

    while process.poll() is None:
        ready, _, _ = select.select(rlist, [], [])

        current_time = now()
        if process.stdout in ready:
            stdout = process.stdout.readline()
            if stdout != '':
                stdout_handler(current_time, stdout)

知道如何解决这个问题吗?

0 个答案:

没有答案