Python并发编程-生产消费模型

Posted 空林~~清风~~~

tags:

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

生产消费模型初步

#产生两个子进程,Queue可以在子进程之间传递消息
from multiprocessing import Queue,Process
import random
import time
#队列是进程安全的,队列里的数据只能被一个进程获取,所有q.put(None)只对应一个进程,所以要放两个q.put(None)
def producer(name, food, q):
    for i in range(10):
        time.sleep(random.randint(1,3))
        f = ('%s生产了%s%s' %(name,food,i))
        print(f)
        q.put(f)
def consume(q,name):
    while True:
        food = q.get()
        if food is None:
            print('%s获取了个一个空'%name)
            break
        print('33[31m%s消费了%s33[0m' % (name, food))
        time.sleep(random.randint(1,3))

if __name__ == '__main__':
    q = Queue(20) #Queue可以在进程间传递数据
    p = Process(target=producer, args=('Egon','包子',q))
    p2 = Process(target=producer, args=('WuSir', '泔水', q))
    p.start()
    p2.start()
    c = Process(target=consume, args=(q,'Alex'))
    c2 = Process(target=consume, args=(q,'jinboss'))
    c.start()
    c2.start()
    p.join()#使得主进程感知P,P2的结束
    p2.join()
    q.put(None)
    q.put(None)

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

python并发编程之多线程守护系列互斥锁生产者消费者模型

python学习_day35_并发编程之多进程3

python 复习—并发编程实战——多线程和多进程的生产者消费者模型线程进程再总结

python 复习—并发编程——线程锁threading.local线程池生产者消费者模型线程安全

转: Java并发编程之十三:生产者—消费者模型(含代码)

Python之路(第三十八篇) 并发编程:进程同步锁/互斥锁信号量事件队列生产者消费者模型