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