python多线程编程(6): 队列同步
来源:互联网 发布:java 集合 编辑:程序博客网 时间:2024/05/29 02:03
原文链接
前面介绍了互斥锁和条件变量解决线程间的同步问题,并使用条件变量同步机制解决了生产者与消费者问题。
让我们考虑更复杂的一种场景:产品是各不相同的。这时只记录一个数量就不够了,还需要记录每个产品的细节。很容易想到需要用一个容器将这些产品记录下来。
Python的Queue模块中提供了同步的、线程安全的队列类,包括FIFO(先入先出)队列Queue,LIFO(后入先出)队列LifoQueue,和优先级队列PriorityQueue。这些队列都实现了锁原语,能够在多线程中直接使用。可以使用队列来实现线程间的同步。
用FIFO队列实现上述生产者与消费者问题的代码如下:
#encoding=utf-8import threadingimport timefrom Queue import Queueclass Producer(threading.Thread): def run(self): global queue count = 0 while True: for i in range(100): if queue.qsize() > 1000: pass else: count = count +1 msg = '生成产品'+str(count) queue.put(msg) print msg time.sleep(1)class Consumer(threading.Thread): def run(self): global queue while True: for i in range(3): if queue.qsize() < 100: pass else: msg = self.name + '消费了 '+queue.get() print msg time.sleep(1)queue = Queue()def test(): for i in range(500): queue.put('初始产品'+str(i)) for i in range(2): p = Producer() p.start() for i in range(5): c = Consumer() c.start()if __name__ == '__main__': test()
- python多线程编程(6): 队列同步
- python多线程编程(6): 队列同步
- python多线程编程(6): 队列同步
- Python:多线程、消息队列编程
- Python线程编程(三)同步队列
- python多线程编程(5): 条件变量同步
- Python 多线程编程及同步处理
- python多线程编程: 使用互斥锁同步线程
- python多线程编程: 条件变量同步
- Python 多线程编程及同步处理
- python多线程编程(5): 条件变量同步
- python多线程编程(5): 条件变量同步
- python多线程编程(5): 条件变量同步
- python多线程编程: 使用互斥锁同步线程
- python多线程编程(5): 条件变量同步
- python多线程编程: 使用互斥锁同步线程
- python多线程编程: 使用互斥锁同步线程
- Python多线程编程及同步处理
- svn服务器的配置以及与apache httpd的整合工作记录
- 与雅虎专利战 微软助阵Facebook
- 5 Ways You can Learn Programming Faster
- 360浏览器集成IE8内核
- 显卡告别3D游戏迈向通用计算时代
- python多线程编程(6): 队列同步
- 读《Java编程思想》-- 从c++转向java的java细节(6~9)
- Hadoop(百科介绍)
- vs2005常用快捷键
- javascript无限循环滚动
- ffmpeg x264编译与使用介绍
- 修改mysql密码的方法
- Android核心研究
- 关于Spirng Quartz定时触发器+源码示例!