您的位置:首页 > 编程语言 > Python开发

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

2016-11-23 09:55 274 查看
#!/usr/bin/env python
# -*- coding: utf-8 -*-

from threading import Thread, Condition
import time

items = []
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()


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: