确保每个打印在线程时都在换行符上,在 python 中无限期
Posted
技术标签:
【中文标题】确保每个打印在线程时都在换行符上,在 python 中无限期【英文标题】:Make sure each print is on a newline when threading, indefinitely in python 【发布时间】:2022-01-20 13:50:55 【问题描述】:只是一个小问题。
我正在使用大约 6 个线程,所有这些线程都每隔几秒钟打印一次。 有时它们会像这样打印在同一行:
OUTPUT
OUTPUT
OUTPUTOUTPUT
OUTPUT
OUTPUT
如您所见,这会留下一个空行和一个双打印。有没有办法可以确保这不会发生。我看到一句话:
print("OUTPUT", end="\n")
这不起作用,所以我又回到堆栈溢出!
【问题讨论】:
您在执行此操作时是否收到任何错误消息? 你可以这样写:print("OUTPUT\n")
@MohammadKhoshbin 那行不通。它只是在每次打印之间留出一个间隙。
这能回答你的问题吗? Python : printing in multiple threads
【参考方案1】:
管理此问题的一种方法是使用包装函数进行打印并使用 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() 只能被成功获取锁的线程调用
【讨论】:
以上是关于确保每个打印在线程时都在换行符上,在 python 中无限期的主要内容,如果未能解决你的问题,请参考以下文章