python 使用 condition 来来同步资源。condition 在文档中描述的是使用 RLock,可重复进入的锁。
今天遇到一个奇怪的问题,condition 在 acquire 时卡住进程了。请教一下大家这种情况怎么解释。
以下是重现问题的代码:
import threading import Queue import time queue = Queue.Queue() condition = threading.Condition() def producer(): while True: with condition: queue.put(time.time()) time.sleep(1) def consumer(): while True: with condition: a = queue.get() condition.notify() print a threading.Thread(target=producer).start() threading.Thread(target=consumer).start()
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
Queue 自带锁了
你有另外用锁,很容易造成死锁的~
还有,要把sleep改为 cond.wait(),这样,notify()才起作用~