在 python 中运行进程时逐行打印



我最近致力于使用多线程,但遇到了一个问题,似乎多处理是更好的方法。当我将一个简单的循环计数器函数作为一个进程运行时,为什么它不循环访问并打印出输出?相反,代码在生成输出之前等待设定的时间量。有没有办法解决这个问题,或者我是否以这种方式处理流程?

import multiprocessing, time
def loop_process(process_name):
    loopCnt = 0
    print "nstarting {}".format(process_name)
    for loopCnt in range(15):
        print("value of loopCnt = {}".format(loopCnt))
        loopCnt += 1
        time.sleep(1)
    print('stopping {}'.format(process_name))
if __name__ == '__main__':    
    L00P_process = multiprocessing.Process(target=loop_process, args=('L00P_process',))
    L00P_process.start()
    L00P_process.join()
    print('processes stopped')
    print "Exiting Main"

我不清楚你看到了什么。 在刚才的Windows盒子上,从交互式控制台("DOS盒子"(运行程序,我每秒看到一次value of loopCnt = ...,直到程序结束。 这就是我所期望的。

您在哪个操作系统下运行,您如何运行程序,以及您到底看到了什么?

在大多数(所有?(机器上,如果标准输出(stdout(连接到交互式终端,则它是行缓冲的。 这意味着每次命中线边界时都会强制显示输出。 对于其他类型的输出设备,它可能会使用其他类型的缓冲,这可能是延迟的原因。

尝试:首先添加

import sys

在顶部附近,然后添加

sys.stdout.flush()

在您的之后

print("value of loopCnt = {}".format(loopCnt))

这应该告诉我们您是否遇到输出缓冲问题。

相关内容

  • 没有找到相关文章

最新更新