Queue的种类:

FIFO:

Queue.Queue(maxsize=0)

FIFO即First in First Out,先进先出。Queue提供了一个基本的FIFO容器,使用方法很简单,maxsize是个整数,指明了队列中能存放的数据个数的上限。一旦达到上限,插入会导致阻塞,直到队列中的数据被消费掉。如果maxsize小于或者等于0,队列大小没有限制。

示例:

import queue

q = queue.Queue()

q.put(1)

q.put(2)

q.put(3)

print(q.get())

print(q.get())

print(q.get())

输出:

1

2

3

LIFO

Queue.LifoQueue(maxsize=0)

LIFO即Last in First Out,后进先出。与栈的类似,使用也很简单,maxsize用法同上

示例:

import queue

q = queue.LifoQueue()

q.put(1)

q.put(2)

q.put(3)

print(q.get())

print(q.get())

print(q.get())

输出:

3

2

1

priority

class Queue.PriorityQueue(maxsize=0)

构造一个优先队列。maxsize用法同上。

示例:

import queue

q =queue.PriorityQueue(3)

q.put((2,'aaron'))

q.put((-1,'jim'))

q.put((5,'jack'))

print(q.get())

print(q.get())

print(q.get())

输出:

(-1, 'jim')

(2, 'aaron')

(5, 'jack')

基本方法:

Queue.Queue(maxsize=0)   FIFO, 如果maxsize小于1就表示队列长度无限

Queue.LifoQueue(maxsize=0)   LIFO, 如果maxsize小于1就表示队列长度无限

Queue.qsize()   返回队列的大小

Queue.empty()   如果队列为空,返回True,反之False

Queue.full()   如果队列满了,返回True,反之False

Queue.get([block[, timeout]])   读队列,timeout等待时间

Queue.put(item, [block[, timeout]])   写队列,timeout等待时间

Queue.queue.clear()   清空队列

其他:

task_done()

意味着之前入队的一个任务已经完成。由队列的消费者线程调用。每一个get()调用得到一个任务,接下来的task_done()调用告诉队列该任务已经处理完毕。

如果当前一个join()正在阻塞,它将在队列中的所有任务都处理完时恢复执行(即每一个由put()调用入队的任务都有一个对应的task_done()调用)。

join()

阻塞调用线程,直到队列中的所有任务被处理掉。

只要有数据被加入队列,未完成的任务数就会增加。当消费者线程调用task_done()(意味着有消费者取得任务并完成任务),未完成的任务数就会减少。当未完成的任务数降到0,join()解除阻塞。

pythonqueue线程_python之线程queue相关推荐

  1. python结束线程池正在运行的线程_python之线程与线程池

    #进程是资源分配的最小单位,线程是CPU调度的最小单位.每一个进程中至少有一个线程.#传统的不确切使用线程的程序称为只含有一个线程或单线程程序,而可以使用线程的程序被称为多线程程序,在程序中使用一个线 ...

  2. python守护线程_Python守护线程用法实例

    本文实例讲述了Python守护线程用法.分享给大家供大家参考,具体如下: 如果你设置一个线程为守护线程,就表示你在说这个线程是不重要的,在进程退出的时候,不用等待这个线程退出.如果你的主线程在退出的时 ...

  3. python开两个守护线程_python 守护线程

    守护线程 如果python线程是守护线程,那么以为着这个线程是"不重要"的,"不重要"意味着如果他的父进程结束了但该守护线程没有运行完,守护进程就会被强制结束. ...

  4. python获取当前线程_Python爬虫(线程,进程)

    第一章   线程的使用 并发:指的是任务数多余cpu核数 并行:指的是任务数小于等于cpu核数,即任务真的是一起执行的 1.线程的概念 线程就是在程序运行过程中,执行程序代码的一个分支,每个运行的程序 ...

  5. python 在主线程开线程_Python开启线程,在函数中开线程的实例

    逻辑处理上分成了多个模块,为了提高效率,前一个模块处理完调用后一个模块操作时使用多线程 我这里遇到的情形是前面取数据后面存到mysql,发现单线程效率很低,改为取数据后开线程存到mysql 开启线程之 ...

  6. python可以开多少线程_Python开启线程,在函数中开线程的实例

    逻辑处理上分成了多个模块,为了提高效率,前一个模块处理完调用后一个模块操作时使用多线程 我这里遇到的情形是前面取数据后面存到mysql,发现单线程效率很低,改为取数据后开线程存到mysql 开启线程之 ...

  7. python多线程守护线程_Python守护程序线程

    python多线程守护线程 In this tutorial we will be learning about Python Daemon Thread. In our previous tutor ...

  8. python结束线程_python终止线程

    可以通过以下方式来终止线程:通过抛出异常来终止进程 通过一个终止标志来终止进程 使用traces来终止进程 使用多线程模型来终止进程 通过将进程设置为deamon来终止进程 使用隐藏属性_stop() ...

  9. pythonmultiprocessing之 queue线程_python中的进程、线程(threading、multiprocessing、Queue、subprocess)...

    Python中的进程与线程 学习知识,我们不但要知其然,还是知其所以然.你做到了你就比别人NB. 我们先了解一下什么是进程和线程. 进程与线程的历史 我们都知道计算机是由硬件和软件组成的.硬件中的CP ...

最新文章

  1. 1000亿美元!英特尔要在美国建世界最大芯片厂,美520 亿美元芯片法案接近敲定...
  2. 从生态、业绩角度分析芯片行业
  3. SQL查询 的一些原则
  4. window下安装nvm、node.js、npm的步骤
  5. OpenCV+python图像处理基础操作
  6. 在JAXB解组期间应用名称空间
  7. 丁香园 武汉 神童_杭州、武汉、成都哪个城市更适合程序员发展
  8. android平板 深度学习,这款叫Remix的设备,或许可以拯救安卓平板
  9. npm run dev (明明有.vue文件),却报错 cannot GET
  10. EDG夺冠!每个队员获赠一套房:背后老板成最大赢家
  11. 洲明科技与意法半导体合作开发新一代LED显示屏
  12. win10如何关闭F1~F12快捷键?
  13. 【状压dp】AC Challenge
  14. DSP之时钟与定时器之一时钟发生器
  15. C#基础 数据类型 类型转换
  16. Java里String str = new String(“Hello“);会创建几个对象?
  17. HashMap源码注释
  18. appium+python环境搭建_想学习自动化测试,已经学习了appium+python环境搭建和python的简单内容,下面该怎么做?...
  19. 「面试必背」Linux面试题(2022最新版)
  20. 数据治理:数据质量管理办法

热门文章

  1. 高质量程序设计指南c++/c语言(25)--类与内联函数
  2. linux一些杂项整理
  3. MySQL_数据库操作
  4. jQuery(一)—— jQuery 概述 / jQuery 选择器 / jQuery 样式操作 / jQuery 效果
  5. Tips--利用shell脚本批量提取txt文件中任意字段
  6. LeetCode--62.不同路径(排列组合,动态规划)
  7. Tips--Altium Designer 安装时出现Account log in
  8. 一起来玩树莓派--解决官方docker源安装失败的问题
  9. Linux软件安装的几种方法 (一)—— apt-get
  10. PTA13、随机生成密码 (10 分)