#1、线程的队列是使用import queue,如果使用from threading import Queue会报错,因为threading模块没有Queue。
#也就是说,线程队列Queue是在queue模块里面,不在threading模块里面。
import queue
q = queue.Queue()
q.put(1)
print(q.get()) #2、LifoQueue:后进先出队列
import queue
q = queue.LifoQueue()
q.put(1)
q.put(2)
q.put(3)
print(q.get())
print(q.get())
print(q.get())
#
#
# #3、PriorityQueue:优先级队列:值越小越优先,值相同就先进先出。
import queue
q = queue.PriorityQueue()
q.put((3,'c'))
q.put((1,'a'))
q.put((1,'b'))
q.put((4,'d'))
print(q.get())
print(q.get())
print(q.get())
print(q.get())
# (1, 'a')
# (1, 'b')
# (3, 'c')
# (4, 'd') #生产者和消费者模型:
# 4、queue模块里面有Queue这个类,Queue里面有task_done和join方法。
# 通过下列方法让消费者线程结束:
# 因为生产者put100个包子,而消费者get100个包子之后,消费者就吃完包子了,通过q.task_done()发信号给-->生产者,
# q.join()接收信号之后不再阻塞,生产者线程结束-->
# -->接着主线程t1.join()的意思是主线程随着生产者t1子线程的结束而结束-->最后消费者守护线程t2.setDaemon(True)随着主线程的结束而结束。
import queue
from threading import Thread
import time def producer(q):
for i in range(100):
q.put('包子%s' % i)
q.join() def consumer(q, i):
while True:
print('消费者%s吃到%s' % (i, q.get()))
q.task_done() q = queue.Queue(10)
t1 = Thread(target=producer, args=(q,))
t1.start()
for i in range(5):
t2 = Thread(target=consumer, args=(q, i))
t2.setDaemon(True)
t2.start()
t1.join() #task_done方法在进程multiprocessing模块的JoinableQueue类里面,在线程queue模块的Queue类里面。

day52-线程-队列的更多相关文章

  1. python全栈开发 * 线程队列 线程池 协程 * 180731

    一.线程队列 队列:1.Queue 先进先出 自带锁 数据安全 from queue import Queue from multiprocessing import Queue (IPC队列)2.L ...

  2. python 线程队列、线程池、全局解释器锁GIL

    一.线程队列 队列特性:取一个值少一个,只能取一次,没有值的时候会阻塞,队列满了,也会阻塞 queue队列 :使用import queue,用法与进程Queue一样 queue is especial ...

  3. 线程GIL锁 线程队列 回调函数

    ----------------------------------无法改变风向,可以调整风帆;无法左右天气,可以调整心情.如果事情无法改变,那就去改变观念. # # ---------------- ...

  4. Python之线程 3 - 信号量、事件、线程队列与concurrent.futures模块

    一 信号量 二 事件 三 条件Condition 四 定时器(了解) 五 线程队列 六 标准模块-concurrent.futures 基本方法 ThreadPoolExecutor的简单使用 Pro ...

  5. day34 GIL锁 线程队列 线程池

    一.Gil锁(Global Interpreter Lock) python全局解释器锁,有了这个锁的存在,python解释器在同一时间内只能让一个进程中的一个线程去执行,这样python的多线程就无 ...

  6. day 34 线程队列 线程池 协程 Greenlet \Gevent 模块

    1 线程的其他方法 threading.current_thread().getName()    查询当前线程对象的名字 threading.current_thread().ident      ...

  7. tensorflow(二)----线程队列与io操作

    一.队列和线程 1.队列: 1).tf.FIFOQueue(capacity, dtypes, name='fifo_queue') 创建一个以先进先出的顺序对元素进行排队的队列 参数: capaci ...

  8. 网络编程基础--多线程---concurrent.futures 模块---事件Event---信号量Semaphore---定时器Timer---死锁现象 递归锁----线程队列queue

    1 concurrent.futures 模块: # from abc import abstractmethod,ABCMeta # # class A(metaclass=ABCMeta): # ...

  9. day33 GIL锁 线程队列 线程池

    1.    全局解释器锁GIL Python代码的执行由Python虚拟机(也叫解释器主循环)来控制.Python在设计之初就考虑到要在主循环中,同时只有一个线程在执行.虽然 Python 解释器中可 ...

  10. python并发编程之线程剩余内容(线程队列,线程池)及协程

    1. 线程的其他方法 import threading import time from threading import Thread,current_thread def f1(n): time. ...

随机推荐

  1. 四、Antd组件扩展

    注意:先安装扩展,在安装antd框架,否则会提示 一.安装扩展 1.组件 dva 查看项目依赖 原因是我全局安装,依赖为空, npm i dva 查看依赖 cli装global 当访问报错: Warn ...

  2. spring boot2 运行环境

    1.springboot个版本系统需求 spring boot maven jdk 内置tomcat 内置jetty servlet 2.0.x 3.2+ 8或9 8.5(3.1) 9.4(3.1) ...

  3. mybatis的一对多和多对一的连接查询

    实体类: package com.entity; import java.util.List; public class Dept { private Integer deptId; private ...

  4. repr. str, ascii in Python

    repr和str a="Hello" print(str(a)) print(repr(a)) 结果: Hello 'Hello' 可以看出,repr的结果中多了左右两个引号. r ...

  5. 使用java service wrapper将java程序注册为window服务

    1.下载java service wrapper 下载地址:http://wrapper.tanukisoftware.com/doc/english/download.jsp 针对自己的需求下载相应 ...

  6. share团队冲刺10

    团队冲刺第十天 昨天:完善代码,美化界面 今天:整合全部代码,基本完成作品 问题:无

  7. java后台开发细节记录

    1.  ResultMap是程序员控制SQL查询结果和实体类的映射关系,而不是sql语句中字段的重命名,所以在sql语句中还是要按照原来字段的格式进行书写.

  8. JavaScript—暂告,小节

    Javastript 的学习告一段落了.虽然还有更多的:爬虫 什么的    但是和我在学校的相比 要扎实许多.知道了兼容性 面向对象,闭包.....一些细节的用法. 虽然以后可能很少用到.可是我觉得 ...

  9. 利用hutool配置发送邮件的问题 及 阿里企业邮箱526 Authentication failure 错误问题

    hutool 中发送邮件的配置的比较简单.可以参考hutool 官方的教程. 个人尝试了qq邮箱发送邮件 和 阿里企业邮箱发送邮件. 主要是配置不一样: 一.qq邮箱 qq邮箱 我的邮箱配置是: # ...

  10. header() 被用来发送自定义的 HTTP 报文

    header() 被用来发送自定义的 HTTP 报文.关于HTTP报文的更多信息请参考» HTTP/1.1 specification. 请注意一点header()必须在任何实际输出之前调用,不管是普 ...