同时使用stdout在多行上写入

3

正如标题所述,我想知道如何同时在多行上写入文本。我需要这样做的原因是因为我正在使用多线程,希望每个线程都可以显示其进度而不会将所有内容都打印在同一行。

目前,我正在使用此函数将文本写入终端。

def write( text ):
    sys.stdout.write( "\r" + text )
    sys.stdout.flush()

请问有人可以指导我吗?我对Python并不是很熟悉,如果您有解决方案,请用易懂的语言讲解一下,以便像我这样的新手能够理解 :P


我也想知道这个问题的答案,出于同样的原因,我想在10行上拥有进度条,每个线程一个,并在每个线程完成时更新它们。一个“在第x行打印”的例子会很有用。这是你想要的吗?你解决了吗? - jowan sebastian
1个回答

0

您需要使用一个简单的同步机制,例如Lock,以防止两个线程同时写入标准输出:

from threading import Lock
writelock = Lock()

def write( text ):
    writelock.acquire()
    sys.stdout.write( "\r" + text )
    sys.stdout.flush()
    writelock.release()

我不认为这是OP所要求的,但那非常有用。 - jowan sebastian

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接