Python学习笔记——进阶篇第九周———线程进程协程篇(队列Queue和生产者消费者模型)

Posted Yared

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python学习笔记——进阶篇第九周———线程进程协程篇(队列Queue和生产者消费者模型)相关的知识,希望对你有一定的参考价值。

Python之路,进程、线程、协程篇

本节内容

  1. 进程、与线程区别
  2. cpu运行原理
  3. python GIL全局解释器锁
  4. 线程
    1. 语法
    2. join
    3. 线程锁之Lock\\Rlock\\信号量
    4. 将线程变为守护进程
    5. Event事件 
    6. queue队列
    7. 生产者消费者模型
    8. Queue队列
    9. 开发一个线程池
  5. 进程
    1. 语法
    2. 进程间通讯
    3. 进程池 

参考链接http://www.cnblogs.com/alex3714/articles/5230609.html

 

生产者消费者模型

实例演示

#生产者消费者模型

import threading,queue
import time

def consumer(n):  #消费者
    while True:
        print("\\033[32;1mconsumer[%s]\\033[0m get task: %s"%(n,q.get()))
        time.sleep(1)
        q.task_done()#通知队列

def producer(n):#生产者
    count=1#计数器
    while True:
        # for i in range(2):
        # time.sleep(1)
        #if q.qsize()<3:#小于3个包子,为了检测判断不要生产的太多
        print("prodcer [%s] produced a new task:%s"%(n,count))
        q.put(count)
        count +=1#计数器
        q.join()#queue is empty,阻塞,等待队列通知(没有包子时会通知)
        print("all task has been cosumed by consumers...")

q=queue.Queue()

c1=threading.Thread(target=consumer,args=[1,])
c2=threading.Thread(target=consumer,args=[2,])
c3=threading.Thread(target=consumer,args=[3,])
p=threading.Thread(target=producer,args=["XiaoYu",])
p2=threading.Thread(target=producer,args=["Jack",])
# p3=threading.Thread(target=producer,args=["Bob",])
# p4=threading.Thread(target=producer,args=["Z1",])
# p5=threading.Thread(target=producer,args=["Z2",])
c1.start()
c2.start()
c3.start()
p.start()
p2.start()
# p3.start()
# p4.start()
# p5.start()

 

以上是关于Python学习笔记——进阶篇第九周———线程进程协程篇(队列Queue和生产者消费者模型)的主要内容,如果未能解决你的问题,请参考以下文章

Python学习笔记——进阶篇第八周———CPU运行原理与多线程

Python学习--第九周-2

20179223《Linux内核原理与分析》第九周学习笔记

Python第九周 学习笔记

2017-2018-1 20179219《Linux内核原理与分析》第九周作业

Python学习笔记——进阶篇第八周———异常处理