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

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

Queue对象的创建

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

创建新的队列,参数 maxsize 的含义是:

如果 maxsize > 0:当 q 中的元素达到 maxsize 个时,队列就满了,此时再有一个线程希望向里面插入时,如果指定了 block 选项,就会阻塞直到一个线程从里面抽出一个元素。

如果 maxsize <= 0:Python会认为这是一个没有容量限制的队列。

Queue模块定义的异常类

如果队列 q 是空的,此时又调用了 q.get(False),就会抛出该异常。

如果队列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)即不论队列空否,都不阻塞等待。

例如:

q.put(item, block=True, timeout=None)

q.put_nowait(item)

向队列中插入 item,如果队列满了,抛出Queue.Full或线程阻塞等待。

q.qsize()

返回当前队列中的元素个数。

q.join()

q.task_done()

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

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

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

  2. python多线程queue_python多线程+队列(提高爬虫时效性)

    #仅供学习使用,如有侵权请留言删除 from queue import Queue import requests from bs4 import BeautifulSoup import time ...

  3. python:threading多线程模块-使用Queue模块保持线程同步

    利用Queue对象先进先出的特性,将每个生产者的数据一次存入队列,而每个消费者将依次从队列中取出数据 import threading # 导入threading模块 import Queue # 导 ...

  4. 29-30Python多线程、多线程、使用threading模块创建线程;JSON数据解析、编码为JSON类型转换对应表、Python类型转换对应表、json.dumps与json.loads

    29Python3多线程 多线程类似于同时执行多个不同程序,多线程运行有如下优点: 使用线程可以把占据长时间的程序中的任务放到后台去处理. 用户界面可以更加吸引人,比如用户点击了一个按钮去触发某些 ...

  5. Python3.5 queue 模块详解 和 进程间通讯

    queue - A synchronized queue class:https://docs.python.org/3/library/queue.html 菜鸟教程 - Python3 多线程:h ...

  6. Python3教程:多线程的使用教程

    一.简介 Python中使用线程有两种方式:函数或者用类来包装线程对象. 函数式:调用 _thread 模块中的start_new_thread()函数来产生新线程.语法如下: 参数说明: funct ...

  7. python3中的多线程

    #!/usr/bin/env python # -*- coding: utf-8 -*- # @Date    : 2018-07-19 21:50:16 # @Author  : cdl (121 ...

  8. python3 多线程_python3多线程知识点总结

    多线程类似于同时执行多个不同程序,多线程运行有如下优点: 使用线程可以把占据长时间的程序中的任务放到后台去处理. 用户界面可以更加吸引人,比如用户点击了一个按钮去触发某些事件的处理,可以弹出一个进度条 ...

  9. python3 多线程_Python3多线程爬虫实例讲解

    多线程概述 多线程使得程序内部可以分出多个线程来做多件事情,充分利用CPU空闲时间,提升处理效率.python提供了两个模块来实现多线程thread 和threading ,thread 有一些缺点, ...

最新文章

  1. hexo框架个人博客的搭建(面试加分!)
  2. 干货 | NLP、知识图谱教程、书籍、网站、工具...(附资源链接)
  3. WebService技术
  4. ismember--检测集合中的元素
  5. SetBkMode函数用法详解
  6. 《HotSpot实战》读后感
  7. aspose 生成word 简单的文档操作
  8. linux 虚拟机挂载本地,CentOS 在VMWare中挂载本地yum源
  9. 最小值c语言 循环,C语言循环结构 -C语言求全班同学身高的最大值和最小值
  10. android脚步---自动完成文本框
  11. 你的代码,“拯救”过多少人?
  12. C++bitset二进制有序集
  13. java里当显式请求注释时才接受类名称
  14. 1.2 批量生成MySQL建表语句
  15. mil和mm之间的换算
  16. Python绘制二元函数图像
  17. C#实现简单音乐播放器
  18. 一个简易的FTP客户端软件
  19. CE修改Eternium永恒之金【进阶篇】
  20. web课程设计网页规划与设计~在线阅读小说网页共6个页面(HTML+CSS+JavaScript+Bootstrap)...

热门文章

  1. 小白开学Asp.Net Core 《五》
  2. 从ASP.NET Core2.2到3.0你可能会遇到这些问题
  3. .NET Core 开源项目 Anet 在路上
  4. eShopOnContainers 看微服务 ②:配置 启动
  5. 【翻译】asp.net core中使用MediatR
  6. 为什么 web 开发人员需要迁移到. NET Core, 并使用 ASP.NET Core MVC 构建 web 和 API
  7. 业务配置开发平台qMISPlat 2.0 产品介绍
  8. ASP.NET Core MVC 2.1 顶级参数验证
  9. ASP.NET MVC使用Oauth2.0实现身份验证
  10. 协作更进一步:微软隆重介绍Visual Studio动态分享功能