我有两个正在运行的线程,它们都向控制台输出一些文本。 在它们的其中一个上打印连续的感官数据(每10秒一次),而另一个上的一个则打印分析算法的状态更新(大约每小时一次)。
现在,我希望第一个算法仅更新最后一行,以使输出保持人类可读的形式。我使用参数end =“ \ r”来实现这一点,并且可以按预期工作,但是有时如果另一个线程的下一个打印行比感官数据短,则该行的其余部分将包含旧的数据垃圾。 >
当前感觉线程中的打印功能如下:
print(str(int(time.time()) % 100) + ": " + str(tickData), end="\r")
所有其他输出均为正常打印,没有特殊参数。 输出看起来像这样:
Initializing controller...
Updating database.1834e-06]
Waiting for TPM < Margin
Next target: 1.19e-06
32: [1.186e-06, 1.1834e-06]
最后一行每10秒更新一次。问题可以在第二行看到。
我的想法是在缓冲区中打印一行空格,而不立即将其输出到控制台,以确保在打印下一行之前,该行的内容将被正确清空。因此,我需要在不触发刷新的情况下写入stdout缓冲区,但是我不知道这是否有可能。我在互联网上找不到任何东西。
还是有另一种方法可以实现我想要的?我愿意接受所有建议:)