Python打印问题sys.stdout.flush()

问题描述 投票:0回答:1

最近,我使用多重处理编写了脚本。我无法发布该脚本,因此我举了以下小例子。

import multiprocessing
import time
import sys


def test(i):
    for i in range (10):
        print(i)
        sys.stdout.flush()
        time.sleep(1)

print("This text is printed four times, but it should be printed only once")
sys.stdout.flush()
x = []
for i in range(4):
    x.append(i)

if __name__ == "__main__":
    pool = multiprocessing.Pool(processes = 4)
    pool.map(test, x)

我的程序会多次打印程序的状态(例如,此处是文本“此文本已打印四次,但应该只打印一次”),之后我开始进行多处理。当多处理开始时,程序会打印一些旧的打印文本。并且在运行多处理时(主要是在开始时),一些旧的打印文本将再次被打印。因此,我尝试在多处理开始之前使用sys.stdout.flush()。现在,程序将在多处理开始四次旧打印文本之前进行打印。当多处理程序正在运行时,仅当前的打印命令有效,这很好。但是,如何在多处理开始之前清除冲洗,以免得到旧结果的多重打印?

我希望解释是可以理解的...

谢谢您的帮助,>

约翰

最近,我使用多重处理编写了脚本。我无法发布该脚本,因此我举了以下小例子。导入多处理导入时间导入系统清晰度测试(i):适用于范围(10)中的i:...

multiprocessing flush
1个回答
0
投票

我可以,但结构更简单:

© www.soinside.com 2019 - 2024. All rights reserved.