生产者与消费者模型

Posted ooman

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了生产者与消费者模型相关的知识,希望对你有一定的参考价值。

#!/usr/bin/env python
# coding=utf-8

import threading
import time
import Queue


def producer(name, q):
    while True:
        item = u'产品 '.format(q.count)
        q.put(item)
        print u' 生产了\n'.format(name, item)
        q.count += 1
        time.sleep(1)
        if q.count > 10:
            break

def consumer(name, q):
    while True:
        item = q.get()
        print u' 消费了\n'.format(name, item)
        time.sleep(2)
        if q.count > 10:
            break

def run_producer_consumer():
    q = Queue.Queue(maxsize=20)
    q.count = 1
    p1 = threading.Thread(target=producer, args=(u'工厂1', q))
    p2 = threading.Thread(target=producer, args=(u'工厂2', q))
    c1 = threading.Thread(target=consumer, args=(u'老百姓1', q))
    c2 = threading.Thread(target=consumer, args=(u'老百姓2', q))
    c3 = threading.Thread(target=consumer, args=(u'老百姓3', q))
    p1.start()
    p2.start()
    c1.start()
    c2.start()
    c3.start()
    p1.join()
    p2.join()
    c1.join()
    c2.join()
    c2.join()


if __name__ == '__main__':
    run_producer_consumer()

'''
输出为(每次运行结果都不一样):

工厂2 生产了产品 1

老百姓2 消费了产品 1

工厂1 生产了产品 2

老百姓3 消费了产品 2

工厂2 生产了产品 3

老百姓1 消费了产品 3

工厂1 生产了产品 4

老百姓2 消费了产品 4

工厂2 生产了产品 5

老百姓3 消费了产品 5

工厂1 生产了产品 6

老百姓1 消费了产品 6

工厂2 生产了产品 7

工厂1 生产了产品 8

老百姓2 消费了产品 7

工厂2 生产了产品 9

老百姓3 消费了产品 8

工厂1 生产了产品 10
'''

源码可于github下载:https://github.com/gkimeeq/PythonLearning

以上是关于生产者与消费者模型的主要内容,如果未能解决你的问题,请参考以下文章

生产者消费者模型

Java线程同步模型-生产者与消费者

go 生产者消费者模型与发布订阅模型

python 生产者与消费者模型

Linux线程同步与互斥/生产消费者模型

python:生产者与消费者模型