线程的Queue

Posted z18271397173

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了线程的Queue相关的知识,希望对你有一定的参考价值。

线程的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的主要内容,如果未能解决你的问题,请参考以下文章

多线程 多进程 协程 Queue(爬虫代码)

python多线程queue导致的死锁问题

boost::lockfree::queue多线程读写实例

queue非线程安全及多线程解决的方法

newCacheThreadPool()newFixedThreadPool()newScheduledThreadPool()newSingleThreadExecutor()自定义线程池(代码片段

C++11:基于std::queue和std::mutex构建一个线程安全的队列