在python中实现生产者和消费者的例子(五):使用threading模块和全局变量
2013-09-04 13:36
911 查看
本文介绍如何用threading模块实现生产者和消费者的例子
import threading
import 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()
import threading
import 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()
相关文章推荐
- 在python中实现生产者和消费者的例子(四):使用thread模块和全局变量
- python使用threading.condition实现生产者消费者
- 在python中实现生产者和消费者的例子(二):使用multiprocessing和queue
- Python 3 实现定义跨模块的全局变量和使用
- 在python中实现生产者和消费者的例子(三):使用fork和pipe
- Python 3 实现定义跨模块的全局变量和使用
- 在python中实现生产者和消费者的例子(一):使用multiprocessing和pipe()
- Python:使用threading模块实现多线程编程七[使用Condition实现复杂同步]
- python学习笔记之使用threading模块实现多线程(转)
- 使用Python实现生产者消费者问题
- Python:使用threading模块实现多线程编程八[使用Event实现线程间通信]
- Python:使用threading模块实现多线程(转)
- Python:使用threading模块实现多线程编程四[使用Lock互斥锁]
- 使用Python实现生产者消费者问题
- python使用queue队列实现生产者消费者
- Python:使用threading模块实现多线程编程一[综述]
- python中线程的使用以及生产者和消费者的实现
- python3 - 声明全局变量并在不同模块中的使用.
- Python:使用threading模块实现多线程编程一[综述]
- python3 使用threading模块进行多线程编码实现