首页 > 代码库 > python多线程之Condition(条件变量)

python多线程之Condition(条件变量)

#!/usr/bin/env python# -*- coding: utf-8 -*-from threading import Thread, Conditionimport timeitems = []condition = Condition()class Consumer(Thread):    def __init__(self):        Thread.__init__(self)    def consume(self):        global condition        global items        condition.acquire()        if len(items) == 0:            condition.wait()            print ("Consumer notify: no item to consume")        items.pop()        print("Consumer notify: consumed 1 item")        print("Consumer nofity: items to consume are "              + str(len(items)))        condition.notify()        condition.release()    def run(self):        for i in range(0, 20):            time.sleep(4)            self.consume()class Producer(Thread):    def __init__(self):        Thread.__init__(self)    def produce(self):        global condition        global items        condition.acquire()        if len(items) == 10:            condition.wait()            print ("Producer notify: item producted are"                   + str(len(items)))            print("Producer nofity: stop the production!!")        items.append(1)        print("Producer nofity: total items producted "              + str(len(items)))        condition.notify()        condition.release()    def run(self):        for i in range(0, 20):            time.sleep(1)            self.produce()if __name__ == "__main__":    producer = Producer()    consumer = Consumer()    producer.start()    consumer.start()    producer.join()    consumer.join()            

技术分享

python多线程之Condition(条件变量)