关于Pyhton多线程同步队列的应用
2024-10-19 17:20:04
'''
同步队列
put方法和task_done方法,
queue有一个未完成任务数量num,put依次num+1,
task依次num-1.任务都完成时任务结束。 1.创建一个 Queue.Queue() 的实例,然后使用数据对它进行填充。
2.将经过填充数据的实例传递给线程类,后者是通过继承 threading.Thread 的方式创建的。
3.每次从队列中取出一个项目,并使用该线程中的数据和 run 方法以执行相应的工作。
4.在完成这项工作之后,使用 queue.task_done() 函数向任务已经完成的队列发送一个信号。
5.对队列执行 join 操作,实际上意味着等到队列为空,再退出主程序。 ''' import threading
import queue
import time
import random class myThread(threading.Thread):
def __init__(self, index, queue):
threading.Thread.__init__(self)
self.index = index
self.queue = queue def run(self):
while True:
time.sleep(1)
item = self.queue.get()
if item is None:
break
print("序号:", self.index, "任务:", item, " 完成")
# task_done方法使得未完成的任务数量-1
self.queue.task_done() q = queue.Queue(0) # 初始化函数接受一个数字来作为该队列的容量,如果传递的是
# 一个小于等于0的数,那么默认会认为该队列的容量是无限的. for i in range(2):
# 两个线程同时完成任务
myThread(i, q).start() for i in range(10):
# put方法使得未完成的任务数量+1
q.put(i)
最新文章
- ILJMALL project过程中遇到Fragment嵌套问题:IllegalArgumentException: Binary XML file line #23: Duplicate id
- python 单步调试初探(未完待续)
- 用户体验学习笔记(工程中发现的PM常犯错误)
- Linq to Sql 聚合查询
- js会员头像上传拖动处理头像类
- C#检测驱动是否安装的问题
- UIButton的常用属性
- GIT:本地有更改,但强制作远程仓库里作更新
- 【puthon基础】之str类字符串
- Assert中的静态方法
- 一起来学linux:SSH远程登陆
- 读懂源码:一步一步实现一个 Vue
- 基于open62541的opc ua 服务器开发实现(1)
- linux下安装与配置Redis
- css 初始化样式
- sql server 性能调优之 CPU消耗最大资源分析1 (自sqlserver服务启动以后)
- IDEA整合Junit测试框架
- nginx防攻击的简单配置
- maven 解决jar冲突
- python 某个目录下的所有文件列表