Python多线程(3)——Queue模块

  Queue模块支持先进先出(FIFO)队列,支持多线程的访问,包括一个主要的类型(Queue)和两个异常类(exception classes)。

  Python 2 中的Queue模块在Python 3中更名为 queue。

Queue对象的创建

  可以通过实例化Queue类型获得队列对象:

1
= 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:
    = 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()

Python多线程(3)——Queue模块相关推荐

  1. Python标准库queue模块原理浅析

    Python标准库queue模块原理浅析 本文环境python3.5.2 queue模块的实现思路 作为一个线程安全的队列模块,该模块提供了线程安全的一个队列,该队列底层的实现基于Python线程th ...

  2. Python多线程ping(ping3模块)

    Python多线程ping(ping3模块) 代码 from ping3 import ping from concurrent.futures import ThreadPoolExecutor## ...

  3. Python 多线程(threading模块)

    首先,自己区分单线程和多线程的概念,自己去搜 单线程的例子如下: [python] view plaincopyprint? __author__ = 'MrChen' import threadin ...

  4. python多线程执行其他模块的文件_python并发编程--进程线程--其他模块-从菜鸟到老鸟(三)...

    concurrent模块 1.concurrent模块的介绍 concurrent.futures模块提供了高度封装的异步调用接口 ThreadPoolExecutor:线程池,提供异步调用 Proc ...

  5. python消息队列模块_day43-python消息队列二-queue模块

    Python提供了Queue模块来专门实现消息队列Queue对象 Queue对象实现一个fifo队列(其他的还有lifo.priority队列,这里不再介绍).queue只有maxsize一个构造参数 ...

  6. python 队列实现_python中实现队列的queue模块

    python中的queue模块提供了同步的.线程安全的队列类,包括FIFO(先进先出)的Queue类和LIFO(后进先出,栈结构)LifoQueue类和优先队列PriorityQueue类,它们都实现 ...

  7. python创建多线程_Python 多线程,threading模块,创建子线程的两种方式示例

    本文实例讲述了Python 多线程,threading模块,创建子线程的两种方式.分享给大家供大家参考,具体如下: GIL(全局解释器锁)是C语言版本的Python解释器中专有的,GIL的存在让多线程 ...

  8. python多线程队列处理_Python线程和队列使用的一点思考

    Python线程和队列使用的一点思考 1. 斗哥采访环节请问为什么要使用线程? 答:为了提高程序速度,代码效率呀. 请问为什么要使用队列? 答:个人认为队列可以保证线程安全,实现线程间的同步,比较稳. ...

  9. Python 多线程爬虫

    多线程爬虫 有些时候,比如下载图片,因为下载图片是一个耗时的操作.如果采用之前那种同步的方式下载.那效率肯会特别慢.这时候我们就可以考虑使用多线程的方式来下载图片. 多线程介绍: 多线程是为了同步完成 ...

  10. 2019.1.12日 PYTHON多线程爬虫笔记

    多线程爬虫 有些时候,比如下载图片,因为下载图片是一个耗时的操作.如果采用之前那种同步的方式下载.那效率肯会特别慢.这时候我们就可以考虑使用多线程的方式来下载图片. 多线程介绍: 多线程是为了同步完成 ...

最新文章

  1. 技术人生:与其鸟宿檐下,不如击翅风雨
  2. PMcaff大讲堂:竞品分析项目管理课程总结分享
  3. 赋能‘元宇宙’,这些企业强势破圈 | 2021AI 最佳成长榜
  4. 联想T460 Win10下“系统中断”CPU占用率高的解决办法
  5. JS 清空table
  6. 位域 bit-fields C的重要数据结构
  7. 「拥抱开源, 又见 .NET」系列第三次线下活动简报
  8. [Swagger2]配置Swagger
  9. php bean,php框架Phpbean说明
  10. 拉氏变换及复域传递函数
  11. 懒癌晚期学图论的时候自己用C语言写了个求可达性矩阵的算法~
  12. c++工作笔记001---c++相关零碎要点_endl、“\n”和‘\n’区别_extern int a关键字_-的意思_::的意思_指针和引用的区别
  13. 2022年华为笔试面试机考真题100道(C/C++语言)
  14. unity for 易接IOSsdk
  15. Python中机器学习模型的几种保存方式
  16. [项目分享]JSP+Servlet+JDBC实现的shine网上书城
  17. “金三银四“,敢不敢“试”?
  18. 天耀18期 - 12.数据结构-1-2.LinkedList【作业】-猜数字.doc
  19. 4.9-4.10 矩阵乘法的性质 矩阵的幂运算 矩阵的转置及其性质
  20. PyCharm中文版(无需汉化包,一键设置)

热门文章

  1. 2022-2028年中国侧线油行业市场研究及前瞻分析报告
  2. Python+OpenCV 图像处理系列(7)—— 图像色彩空间及转换
  3. Python中re的match、search、findall、finditer区别正则
  4. OP_REQUIRES failed at conv_ops.cc:386 : Resource exhausted: OOM when allocating tensor with shape..
  5. 聊一聊Spring中的线程安全性
  6. JDBC简单操作步骤总结
  7. LeetCode简单题之有序数组的平方
  8. OpenCL框架与示例
  9. 双精度张量内核加快了高性能计算
  10. 适用于AMD ROC GPU的Numba概述