python thread

根据队列实现生产者消费者模型。

Queue 先进先出的机制。

#!/usr/bin/python
#_*_ coding:UTF-8 _*_


from threading import Thread
from queue import Queue
class producer(Thread):
    def run(self):
        Thread.run(self)

class consumer(Thread):
    def run(self):
        Thread.run(self)





que = Queue(maxsize=100)
que.put('1')
que.put('2')
print(que.qsize())
que.get()
print(que.qsize())
#!/usr/bin/python
#_*_ coding:UTF-8 _*_


from threading import Thread
from queue import Queue
import time
class producer(Thread):
    def __init__(self,name,queue):
        '''
        :param name: 相当于一个生产者线程名,类的对象
        :param queue:容器
        '''
        self.__Name = name
        self.__Queue = queue
        #需要执行父类的构造函数,不然或报错
        super(producer,self).__init__()


    def run(self):
        while True:
            if self.__Queue.full():
                time.sleep(1)
            else:
                self.__Queue.put("baozi")
                time.sleep(1)
                print(self.__Name + "生产了一个包子")
        Thread.run(self)

class consumer(Thread):
    def __init__(self,name,queue):
        '''
        :param name: 相当于一个生产者线程名,类的对象
        :param queue:容器
        '''
        self.__Name = name
        self.__Queue = queue
        super(consumer, self).__init__()

    def run(self):
        while True:
            if self.__Queue.empty():
                time.sleep(1)
            else:
                self.__Queue.get("baozi")
                print(self.__Name + "消费了一个包子")
        Thread.run(self)

que = Queue(maxsize=100)

#创建线程
zhangsan1 = producer("zhangsan1",que)

zhangsan2 = producer("zhangsan2",que)
zhangsan3 = producer("zhangsan3",que)
zhangsan4 = producer("zhangsan4",que)

zhangsan1.start()
zhangsan2.start()
zhangsan3.start()
zhangsan4.start()

for item in range(20):
     name = 'consumer%s' %(item)
     cons = consumer(name,que)
     cons.start()



'''
que = Queue(maxsize=100)
que.put('1')
que.put('2')
print(que.qsize())
que.get()
print(que.qsize())
'''

猜你喜欢

转载自blog.csdn.net/qq_38125626/article/details/81275987