zoukankan      html  css  js  c++  java
  • Python学习笔记——进阶篇【第九周】———线程、进程、协程篇(队列Queue和生产者消费者模型)

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

    本节内容

    1. 进程、与线程区别
    2. cpu运行原理
    3. python GIL全局解释器锁
    4. 线程
      1. 语法
      2. join
      3. 线程锁之LockRlock信号量
      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("33[32;1mconsumer[%s]33[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()
    
  • 相关阅读:
    hihocoder 1038
    hihocoder 1039
    poj 2774
    bzoj 4690&&4602
    poj 2417
    STL
    poj 1026
    poj 1064
    poj 1861(prim)
    poj 1129
  • 原文地址:https://www.cnblogs.com/yard/p/5622128.html
Copyright © 2011-2022 走看看