使用python脚本进行一些线程处理,并在各种命令中吐出东西。但是,我想在每个线程的末尾打印出一个“Remaining:x”,然后在下一个打印语句之前删除该行。所以基本上,我试图实现一个进度/状态更新,在下一个打印语句之前自行消除。线程不干扰打印
我有这样的事情:
for i in range(1,10):
print "Something here"
print "Remaining: x"
sleep(5)
sys.stdout.write("\033[F")
sys.stdout.write("\033[K")
这工作时,你只是事情是这样的印刷这一点罚款;但是,只要您执行线程,“剩余”文本就不会一直被擦除,有时在擦除前一行之前,您还会得到另一个“此处的东西”。
只需要一点帮助,试图找出使用多线程来组织我的进度/状态文本的最佳方式。
谢谢。
'sys.stdout'被缓冲。你可以调用'sys.stdout.flush()',并希望在从另一个线程写入之前调用它 - 但不能保证。 –
嗯好的。谢谢您的帮助! – LewlSauce
以及解决该问题的正确方法(与多于一个线程使用的任何资源一样)是锁定:https://docs.python.org/2/library/threading.html#lock-objects –