线程的Queue
Posted z18271397173
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了线程的Queue相关的知识,希望对你有一定的参考价值。
Python中,队列是线程间最常用的交换数据的形式。Queue模块是提供队列操作的模块,虽然简单易用,但是不小心的话,还是会出现一些意外。
创建‘队列’对象
import queue
q = queue.Queue(3) #Queue(maxsizse = 3)
Queue.Queue类即是一个队列的同步实现。队列长度可为无限或者有限。可通过Queue的构造函数的可选参数maxsize来设定队列长度。如果maxsize小于1就表示队列长度无限。
将一个值放入队列中
q.put(10) 调用队列对象的put()方法在队尾插入一个项目。put()有两个参数,第一个item为必需的,为插入项目的值;第二个block为可选参数,默认为 1。如果队列当前为空且block为1,put()方法就使调用线程暂停,直到空出一个数据单元。如果block为0,put方法将引发Full异常。
q.put(3)
q.put(‘zhang‘)
q.put([‘zhang‘,‘li‘])
# q.put(6,block=False)
print(q.get())
q.put(6,block=True,timeout=2)
# q.put(8)
本身在队列full时,block默认为True。所以再向满的队列中插入数据时,队列就会阻塞,线程就会卡住。当block=False时,再次put程序就会发生错误。在timeout参数设定中,q.put(6,block=True,timeout=2)意味着当队列过了两秒还没有数据被取出程序就会报错。在尝试
以上是关于线程的Queue的主要内容,如果未能解决你的问题,请参考以下文章
newCacheThreadPool()newFixedThreadPool()newScheduledThreadPool()newSingleThreadExecutor()自定义线程池(代码片段