Python之路,进程、线程、协程篇
本节内容
- 进程、与线程区别
- cpu运行原理
- python GIL全局解释器锁
- 线程
- 语法
- join
- 线程锁之LockRlock信号量
- 将线程变为守护进程
- Event事件
- queue队列
- 生产者消费者模型
- Queue队列
- 开发一个线程池
- 进程
- 语法
- 进程间通讯
- 进程池
参考链接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()