为何 python condition acquire 会阻塞线程?

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()
查看回复