PYTHON线程知识再研习F---队列同步Queue
2014-09-05 09:43
746 查看
让我们考虑更复杂的一种场景:产品是各不相同的。这时只记录一个数量就不够了,还需要记录每个产品的细节。很容易想到需要用一个容器将这些产品记录下来。
Python的Queue模块中提供了同步的、线程安全的队列类,包括FIFO(先入先出)队列Queue,LIFO(后入先出)队列 LifoQueue,和优先级队列PriorityQueue。这些队列都实现了锁原语,能够在多线程中直接使用。可以使用队列来实现线程间的同步。
Python的Queue模块中提供了同步的、线程安全的队列类,包括FIFO(先入先出)队列Queue,LIFO(后入先出)队列 LifoQueue,和优先级队列PriorityQueue。这些队列都实现了锁原语,能够在多线程中直接使用。可以使用队列来实现线程间的同步。
#!/usr/bin/env python # -*- coding: utf-8 -*- import threading import time from Queue import Queue class Producer(threading.Thread): def run(self): global queue count = 0 while True: for i in range(100): if queue.qsize() > 1000: pass else: count += 1 msg = '生成产品' + str(count) queue.put(count) 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线程知识再研习E---条件变量同步Condition
- PYTHON线程知识再研习C---线程互斥锁
- iOS中多线程知识总结:进程、线程、GCD、串行队列、并行队列、全局队列、主线程队列、同步任务、异步任务等
- Python--线程队列(queue)、multiprocessing模块(进程对列Queue、管道(pipe)、进程池)、协程
- python3 Queue(一个同步队列类)学习
- PYTHON线程知识再研习G--线程间通信Event
- python队列、线程间通信Queue,多进程模块multiprocessing
- python2.0_s12_day9之day8遗留知识(queue队列&生产者消费者模型)
- PYTHON线程知识再研习A
- iOS中多线程知识总结:进程、线程、GCD、串行队列、并行队列、全局队列、主线程队列、同步任务、异步任务等
- iOS中多线程知识总结:进程、线程、GCD、串行队列、并行队列、全局队列、主线程队列、同步任务、异步任务等(有示例代码)
- python线程优先级队列( Queue)
- python学习笔记---线程的queue队列
- Python线程优先级队列(Queue)
- Queue同步队列类在python中的应用
- PYTHON线程知识再研习D---可重入锁
- PYTHON线程知识再研习B
- Python多线程 - 线程间通信之“Queue队列”
- Python中的多线程threading和线程间消息队列queue学习笔记
- Python进阶(3)_进程与线程中的lock(线程中互斥锁、递归锁、信号量、Event对象、队列queue)