确保每个打印在穿线时都在换行符上,无限期 python

Make sure each print is on a newline when threading, indefinitely in python

只是一个小问题。

我正在使用大约 6 个线程,所有线程都每隔几秒打印一次。 有时他们会像这样打印在同一行上:

OUTPUT
OUTPUT
OUTPUTOUTPUT

OUTPUT
OUTPUT

如您所见,这会留下一个空行和一个双打印。有什么办法可以确保这不会发生。我看到有人说:

print("OUTPUT", end="\n")

这没有用,所以我回到堆栈溢出!

管理此问题的一种方法是使用包装函数进行打印并使用 threading.Lock。这是一个例子:

from threading import Thread, Lock
import time

LOCK = Lock()

def doprint(msg):
    with LOCK:
        print(msg)

def athread():
    doprint('Thread is starting')
    time.sleep(0.1)
    doprint('Thread is ending')

threads = []

for _ in range(10):
    t = Thread(target=athread)
    t.start()
    threads.append(t)

for t in threads:
    t.join()

这样,print() 只能被成功获取锁的线程调用