本文介绍如何用threading模块实现生产者和消费者的例子
import threadingimport time
import random
c=0
lock=threading.RLock()
#class 类名 (所要继承的类)
class producer(threading.Thread):
def __init__(self,no):
threading.Thread.__init__(self)
self.no=no
self.isstop=False
def run(self):
global c
while True:
if c<=100:
time.sleep(random.randint(1,3))
lock.acquire()
c=c+1
lock.release()
print 'No %d producer-- %d' %(self.no,c)
else:
time.sleep(random.randint(1,3))
def stop(self):
self.isstop=False
class consumer(threading.Thread):
def __init__(self,no):
threading.Thread.__init__(self)
self.no=no
self.isstop=False
def run(self):
global c
while True:
if c>0:
time.sleep(random.randint(1,3))
lock.acquire()
c=c-1
lock.release()
print 'No %d consumer-- %d' %(self.no,c)
else:
time.sleep(random.randint(1,3))
def stop(self):
self.isstop=False
def center():
#(1,)是为了表示其是元组,若写成(1)则为整型
t=[]
t.append(producer(1))
t.append(producer(2))
t.append(producer(3))
t.append(consumer(4))
t.append(consumer(5))
t.append(consumer(6))
for i in range(6):
t[i].start()
for i in range(6):
t[i].join()
if __name__=='__main__':
center()