gpt4 book ai didi

python - 当打印位于外锁内时需要 Printer_lock

转载 作者:行者123 更新时间:2023-12-01 09:05:00 25 4
gpt4 key购买 nike

我正在观看 Reymond Hettinger 关于 Python 并发性的演讲 ( https://www.youtube.com/watch?v=9zinZmE3Ogk ),我发现了他的一个代码片段,其中演示了 Python 中锁的使用。下面是相同的示例代码:

import threading
from threading import Thread

counter = 0

counter_lock = threading.Lock()
printer_lock = threading.Lock()

def worker():
global counter
with counter_lock:
counter += 1
with printer_lock:
print(f"The count is {counter}")
print("----------------")

with printer_lock:
print("Starting up ...")


worker_threads = []
for i in range(10):
t = Thread(target=worker)
worker_threads.append(t)
t.start()
for t in worker_threads:
t.join()

我的问题是这个代码块:

 with printer_lock:
print(f"The count is {counter}")
print("----------------")

当任何时候只有一个线程执行这些行时(由于外部 counter_lock),为什么我们需要打印机锁?

任何人都可以对此进行更多说明吗?

提前致谢。

最佳答案

在这个特定的示例中,我相信如果您删除打印机锁,也不会产生任何影响。那是因为每个线程所做的唯一打印就是打印计数器。但是,如果您的线程在 counter_lock 之外执行其他操作,那么您需要在每次打印时获取 Printer_lock,以防止多个线程的输出交错。

关于python - 当打印位于外锁内时需要 Printer_lock,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52138489/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com