python queue join task_done的概念及实例解析
import threading
import queue
import time # 创建队列,用于存储数据
q = queue.Queue()
icnt = 0
def producer():
while True:
global icnt
icnt = icnt + 1
#print("producer icnt is:%d "%icnt)
data = "hello world"
print("producer is:",icnt)
q.put(data) # 生产者线程函数,向队列存入数据
#q.join()
data = "hello queue aaa "
print("producer is:aaa ",icnt)
q.put(data) # 生产者线程函数,向队列存入数据
q.join()
time.sleep(1) def consumer():
while True:
data = q.get() # 消费者线程,从队列取出数据
q.task_done()
print("consumer is:",data) # 创建并启动生产者、消费者线程
t1 = threading.Thread(target=producer)
t2 = threading.Thread(target=consumer)
t1.start()
t2.start() # 等待线程结束 t1.join()
t2.join()
运行结果:
producer is: 1
producer is:aaa 1
consumer is: hello world
consumer is: hello queue aaa
producer is: 2
producer is:aaa 2
consumer is: hello world
consumer is: hello queue aaa
源码二
import threading
import queue
import time # 创建队列,用于存储数据
q = queue.Queue()
icnt = 0
def producer():
while True:
global icnt
icnt = icnt + 1
#print("producer icnt is:%d "%icnt)
data = "hello world"
print("producer is:",icnt)
q.put(data) # 生产者线程函数,向队列存入数据
q.join()
data = "hello queue aaa "
print("producer is:aaa ",icnt)
q.put(data) # 生产者线程函数,向队列存入数据
q.join()
time.sleep(1) def consumer():
while True:
data = q.get() # 消费者线程,从队列取出数据
q.task_done()
print("consumer is:",data) # 创建并启动生产者、消费者线程
t1 = threading.Thread(target=producer)
t2 = threading.Thread(target=consumer)
t1.start()
t2.start() # 等待线程结束 t1.join()
t2.join()
运行结果:
producer is: 1
consumer is: hello world
producer is:aaa 1
consumer is: hello queue aaa
producer is: 2
consumer is: hello world
producer is:aaa 2
consumer is: hello queue aaa
python queue join task_done的概念及实例解析的更多相关文章
- Python Queue队列
queue is especially useful in threaded programming when information must be exchanged safely between ...
- Python Queue实现生产与消费
Python Queue模块详解 from:https://blog.linuxeye.com/334.html Python中,队列是线程间最常用的交换数据的形式.Queue模块是提供队列操作的模块 ...
- python --- queue模块使用
1. 什么是队列? 学过数据结构的人都知道,如果不知道队列,请Google(或百度). 2. 在python中什么是多生产者,多消费模型? 简单来说,就是一边生产(多个生产者),一边消费(多个消费者) ...
- Python -- queue队列模块
一 简单使用 --内置模块哦 import Queuemyqueue = Queue.Queue(maxsize = 10) Queue.Queue类即是一个队列的同步实现.队列长度可为无限或者有限. ...
- python Queue在两个地方
其一: Source code: Lib/queue.py The queue module implements multi-producer, multi-consumer queues. It ...
- python queue - 同步队列类
参考 官网 queue 模块 queue 模块实现多生产者,多消费者队列. 当必须在 ==多个线程之间安全地交换信息== 时,它在线程编程中特别有用. 此模块中的Queue类实现了所有必需的锁定语义. ...
- python Queue(队列学习)
Python 的Queue模块中提供了同步的.线程安全的队列类,包括FIFO(先入先出)队列Queue,LIFO(后入先出)队列LifoQueue,和优先级队列PriorityQueue.这些队列都实 ...
- 简单介绍一下python Queue中常用的方法
Queue.qsize() 返回队列的大小 Queue.empty() 如果队列为空,返回True,反之False Queue.full() 如果队列满了,返回True,反之FalseQueue.fu ...
- Python Queue(队列)
Queue模块实现了多生产者.多消费者队列.当必须在多个线程之间安全地交换信息时,它在线程编程中特别有用,实现了所有必需的锁定语义. 一.该模块实现了三种类型的队列,它们的区别仅在于检索条目的顺序: ...
- Python中的exec、eval使用实例
Python中的exec.eval使用实例 这篇文章主要介绍了Python中的exec.eval使用实例,本文以简洁的方式总结了Python中的exec.eval作用,并给出实例,需要的朋友可以参考下 ...
随机推荐
- json扩展之自定义序列化方式
简介:由于json.dumps() 只能序列化Python基本数据类型,如果我们想要在数据中掺杂时间对象,或者自定义类的对象则会造成序列化数据的失败,因此json.dumps() 提供了一个属性 cl ...
- 【实用小技巧】RSA非对称加解密及XML&PEM格式互换方案
最近因考虑接口安全问题,有实现给WEB API实现统一的参数鉴权功能,以防止请求参数被篡改或重复执行,参数鉴权方法基本与常见的鉴权思路相同,采用(timestamp+sign),而我为了防止tim ...
- 小知识:Flex ASM特性对集群资源显示的影响
有客户咨询,认为19c RAC集群资源状态和11g RAC大不一样,比如在他们的19c集群,也是只部署2节点,却显示3个资源状态,其中第三个还是offline状态,担心是否有影响. 实际上这和Flex ...
- BasicSample项目说明
整个示例项目,两个Fragment,ProductListFragment和ProductFragment,一个MainActivity.在MainActivity里面展示的是ProductListF ...
- Linux进程的创建与销毁
Linux操作系统是一种多任务.多用户的操作系统,这意味着它可以同时运行多个进程,每个进程都可以执行不同的任务. 在本文中,我们将介绍如何在Linux系统中创建和销毁进程. 进程的创建 在Linux系 ...
- STC12硬件SPI驱动MAX7219点阵LED
max7219是一个用于驱动8位7段数字LED或者8x8点阵LED的驱动芯片, 以列扫描的方式, 用16个pin管理64个发光点, 显示8个数字时刷新率为500-1300Hz, 典型值为800Hz. ...
- 【Unity3D】发射(Raycast)物理射线(Ray)
1 前言 碰撞体组件Collider 中介绍了 2 个碰撞体之间的碰撞检测,本文将介绍物理射线与碰撞体之间的碰撞检测.物理射线由 Ray 定义,通过 Physics.Raycast / Physi ...
- pycharm—flask创建简单web项目
1.系统 系统 版本 OS win 10 pycharm 专业版2022.3.1 2.引入flask包 pip install flask 3.项目目录展示.代码.浏览器访问 from flask i ...
- golang微服务实践:分布式链路追踪系统-jaeger安装与简单使用
简介 jaeger是一个比较有名的分布式链路追踪系统,底层用golang实现,兼容opentracing标准. 文档地址:docs github地址:github 官网:website blog:bl ...
- gitee配置SSH公钥
第一步,找个地方打开"git bash",然后输入生成ssh公钥的命令: ssh-keygen -t rsa -C 'your-email' 然后敲四次回车生成公钥: 第二步,输入 ...