__author__ = 'LL_YING' ''' 生产者消费者模型:生产者必须等到队列有空间踩可以继续投放商品,如果空间已满,则需要等待消费者消耗商品。 生产者必须在等待时间内释放队列的占有权,然后消费者才能消耗了商品通知生产者队列有空间。 ''' import threading con = threading.Condition() class Producer(threading.Thread): def __init__(self, threadname): threading.Thread.__init__(self, name=threadname) def run(self): global x con.acquire() if x == 1000000: con.wait() pass else: for i in range(1000000): x = x + 1 con.notify() print(x) con.release() class Consumer(threading.Thread): def __init__(self, threadingname): threading.Thread.__init__(self, name=threadingname) def run(self): global x con.acquire() if x == 0: con.wait() pass else: for i in range(1000000): x = x - 1 print(x) con.release() x = 0 p = Producer('Producer') c = Consumer('Consumer') p.start() c.start() p.join() c.join() print(x) ''' wait()等待挂起 notify()唤起另外一个线程 线程在acquire和release之间保证同一时间允许一个线程修改数据 '''
Python使用条件变量保持线程同步
最新推荐文章于 2023-04-02 11:46:52 发布