python多线程队列安全
2014-10-18 12:15
447 查看
这是一个经典的“生产者消费者”例子:
python queue模块有三种队列:
1、python queue模块的FIFO队列先进先出。
2、LIFO类似于堆。即先进后出。
3、还有一种是优先级队列级别越低越先出来。 针对这三种队列分别有三个构造函数:
1、class Queue.Queue(maxsize) FIFO
2、class Queue.LifoQueue(maxsize) LIFO
3、class Queue.PriorityQueue(maxsize) 优先级队列 介绍一下此包中的常用方法:Queue.qsize() 返回队列的大小
Queue.empty() 如果队列为空,返回True,反之False
Queue.full() 如果队列满了,返回True,反之False
Queue.full 与 maxsize 大小对应
Queue.get([block[, timeout]])获取队列,timeout等待时间
Queue.get_nowait() 相当Queue.get(False)
非阻塞 Queue.put(item) 写入队列,timeout等待时间
Queue.put_nowait(item) 相当Queue.put(item, False)
Queue.task_done() 在完成一项工作之后,Queue.task_done()函数向任务已经完成的队列发送一个信号
Queue.join() 实际上意味着等到队列为空,再执行别的操作代码:
python queue模块有三种队列:
1、python queue模块的FIFO队列先进先出。
2、LIFO类似于堆。即先进后出。
3、还有一种是优先级队列级别越低越先出来。 针对这三种队列分别有三个构造函数:
1、class Queue.Queue(maxsize) FIFO
2、class Queue.LifoQueue(maxsize) LIFO
3、class Queue.PriorityQueue(maxsize) 优先级队列 介绍一下此包中的常用方法:Queue.qsize() 返回队列的大小
Queue.empty() 如果队列为空,返回True,反之False
Queue.full() 如果队列满了,返回True,反之False
Queue.full 与 maxsize 大小对应
Queue.get([block[, timeout]])获取队列,timeout等待时间
Queue.get_nowait() 相当Queue.get(False)
非阻塞 Queue.put(item) 写入队列,timeout等待时间
Queue.put_nowait(item) 相当Queue.put(item, False)
Queue.task_done() 在完成一项工作之后,Queue.task_done()函数向任务已经完成的队列发送一个信号
Queue.join() 实际上意味着等到队列为空,再执行别的操作代码:
#!/home/oracle/dbapython/bin/python #encoding=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 = 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() < 50: pass else: msg = self.name + '消费了 '+queue.get() print msg time.sleep(1) queue = Queue() def test(): for i in range(100): msg='初始产品'+str(i) print msg queue.put(msg) for i in range(2): p = Producer() p.start() for i in range(5): c = Consumer() c.start() if __name__ == '__main__': test()
相关文章推荐
- 多线程安全的有界队列
- Java多线程总结之线程安全队列Queue
- (十四)RabbitMQ消息队列-启用SSL安全通讯
- 基于condition 实现的线程安全的优先队列(python实现)
- 基于condition 实现的线程安全的优先队列(python实现)
- Java多线程总结之线程安全队列Queue
- Java多线程总结之线程安全队列Queue
- 线程安全的可持久队列
- 利用JAVA线程安全队列简单实现读者写者问题。
- Java多线程总结之线程安全队列Queue
- BFS的辅助队列最小安全长度
- Java多线程总结之线程安全队列Queue
- Java多线程总结之线程安全队列Queue
- Java多线程总结之线程安全队列Queue
- Java多线程总结之线程安全队列Queue
- 线程安全的队列写法
- Java多线程总结之线程安全队列Queue
- c# 安全队列
- WCF服务编程设计规范(6):队列服务、安全和服务总线
- 多线程环境下不安全的消息队列存取---线程不同步会造成隐患