Python多线程(3)——Queue模块
来源:互联网 发布:php走势图源码 编辑:程序博客网 时间:2024/06/05 13:22
Queue模块支持先进先出(FIFO)队列,支持多线程的访问,包括一个主要的类型(Queue)和两个异常类(exception classes)。
Python 2 中的Queue模块在Python 3中更名为 queue。
Queue对象的创建
可以通过实例化Queue类型获得队列对象:
1
q
=
Queue.Queue(maxsize
=
0
)
创建新的队列,参数 maxsize 的含义是:
- 如果 maxsize > 0:当 q 中的元素达到 maxsize 个时,队列就满了,此时再有一个线程希望向里面插入时,如果指定了 block 选项,就会阻塞直到一个线程从里面抽出一个元素。
- 如果 maxsize <= 0:Python会认为这是一个没有容量限制的队列。
Queue模块定义的异常类
1
Queue.Empty
如果队列 q 是空的,此时又调用了 q.get(False),就会抛出该异常。
1
Queue.Full
如果队列q是满的,而又调用了 q.put(x, False),就会抛出该异常。
Queue对象的方法
q.empty()
判断队列是否为空。
q.full()
判断队列是否已满。
q.get(block=True, timeout=None)q.get_nowait()
参数 block 为 False 时,参数 timeout 没有意义,因为线程不会阻塞:
- 如果队列不为空,取走并返回该元素;
- 如果队列为空,抛出Queue.Empty
block 为 True 时,结合超时 timeout 判断当队列空时,是一直阻塞进程,还是进程阻塞一段时间。
get_nowait()等于get(False),或者get(timeout=0)即不论队列空否,都不阻塞等待。
例如:
1
2
3
4
try
:
x
=
q.get_nowait()
except
Queue.Empty:
print
"no more items to process"
q.put(item, block=True, timeout=None)q.put_nowait(item)
向队列中插入 item,如果队列满了,抛出Queue.Full或线程阻塞等待。
q.qsize()
返回当前队列中的元素个数。
q.join()
q.task_done()
阅读全文
0 0
- Python多线程(3)——Queue模块
- Python多线程3:queue
- python多线程(3)---生产者与消费者(线程通信)和Queue模块
- python多线程模块thread,threading,Queue
- python学习—Day46—Queue模块(一)
- [Python] python Queue模块
- Python多线程编程使用Queue模块保持线程同步
- Learning Python(16)--多线程编程(threading,Queue模块)
- thread/threading/Queue/mutex——Python 多线程
- python Queue模块
- python Queue模块
- python Queue模块
- python Queue模块
- python Queue模块
- python模块学习---Queue
- python Queue模块
- Python中的Queue模块
- Python Queue模块
- UVA1252TwentyQuestions
- 图的基本知识点
- C#之入门总结_Math_DateTime_Random_Path_12
- 磁盘配额
- spring data jpa 分页查询
- Python多线程(3)——Queue模块
- 2017 百度之星资格赛1002 度度熊的王国战略【图+贪心】
- Google算法题:目标和
- 判断一颗二叉树是是否是另一颗树的子树。
- UVA
- 《Win32多线程程序设计》线程初识
- Servlet过滤器示例及分析----图片保护过滤器
- HDU 1159 Common Subsequence (最长公共子序列)
- Oracle12c CDB架构图