使用stdout同时写入多行

时间:2015-11-17 19:55:48

标签: python multithreading

正如标题所说,我想知道如何同时在多行上写,我之所以想要这样做是因为我正在使用多线程,并希望每个线程都显示其进度而不打印一切都在同一条线上

现在我正在使用此功能写入终端。

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

有人能指出我正确的方向吗?我对python不是很有经验,所以如果你有一个解决方案,那么请解释一下,以便像我一样的总菜鸟可以理解:P

1 个答案:

答案 0 :(得分:0)

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

from threading import Lock
writelock = Lock()

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