在多线程编程中,每个线程都有自己的执行路径和内存空间。print()
函数用于在控制台输出信息。当多个线程同时运行时,可能会出现线程间的竞争条件(race condition),导致print()
输出错误的值。
print()
输出错误的值通常是由于以下原因:
threading.Lock
)来保护共享资源,确保同一时间只有一个线程可以访问。logging
模块。threading.local()
来创建线程局部变量,避免线程间的数据冲突。import threading
# 创建一个锁
lock = threading.Lock()
def safe_print(msg):
with lock:
print(msg)
def worker():
for i in range(5):
safe_print(f"Thread {threading.current_thread().name} - {i}")
# 创建多个线程
threads = []
for i in range(3):
t = threading.Thread(target=worker, name=f"Thread-{i}")
threads.append(t)
t.start()
# 等待所有线程完成
for t in threads:
t.join()
通过上述方法,可以有效避免多线程环境下print()
输出错误的值的问题。
领取专属 10元无门槛券
手把手带您无忧上云