当前位置: 首页 > news >正文

python 线程池处理文件

使用多线程来加速文件复制的过程,可以使用Python的concurrent.futures模块中的ThreadPoolExecutor。代码如下:

import glob
import os
import shutil
from concurrent.futures import ThreadPoolExecutordef copy_image(image):imagepath = image.replace("\\", "/")# 假设文件名格式为:xxx_yyy.jpg,其中xxx是我们想要的部分,yyy是日期或编号# 我们只取文件名中的xxx和扩展名.jpg,并用目录名替换掉日期或编号imagename = imagepath.split('/')[-1].split('_')[0] + "_" + imagepath.split('/')[-2].split('.')[-1]new_path = os.path.join('image', imagename + '.jpg')shutil.copy(imagepath, new_path)print(imagepath)def main():img_list = glob.glob('D:/911/*/*.jpg')os.makedirs('image', exist_ok=True)# 使用 ThreadPoolExecutor 来并行处理文件复制with ThreadPoolExecutor(max_workers=20) as executor:  # 可以调整max_workers的数量以适应你的CPU和IO性能executor.map(copy_image, img_list)if __name__ == "__main__":main()

为了使用多线程来加速文件复制的过程,你可以使用Python的concurrent.futures模块中的ThreadPoolExecutor。这个模块允许你轻松地并行执行多个任务。以下是你的代码的多线程版本:

import glob
import os
import shutil
from concurrent.futures import ThreadPoolExecutordef copy_image(image):imagepath = image.replace("\\", "/")# 假设文件名格式为:xxx_yyy.jpg,其中xxx是我们想要的部分,yyy是日期或编号# 我们只取文件名中的xxx和扩展名.jpg,并用目录名替换掉日期或编号imagename = imagepath.split('/')[-1].split('_')[0] + "_" + imagepath.split('/')[-2].split('.')[-1]new_path = os.path.join('image', imagename + '.jpg')shutil.copy(imagepath, new_path)def main():img_list = glob.glob('D:/caohejing_20240711/*/*.jpg')os.makedirs('image', exist_ok=True)# 使用 ThreadPoolExecutor 来并行处理文件复制with ThreadPoolExecutor(max_workers=10) as executor:  # 可以调整max_workers的数量以适应你的CPU和IO性能executor.map(copy_image, img_list)if __name__ == "__main__":main()

代码说明:

  1. 函数copy_image:这个函数接受一个图片路径作为参数,然后执行复制操作。它首先修改路径分隔符,然后解析文件名并构建新的文件名和路径,最后使用shutil.copy复制文件。

  2. 函数main:这是主函数,它首先获取所有图片的路径,然后创建一个名为image的目录(如果它不存在的话)。之后,它使用ThreadPoolExecutor来并行地执行copy_image函数,其中executor.map类似于map函数,但是它会并行地应用给定的函数到可迭代对象中的每个元素。

  3. __name__ == "__main__":这是Python的标准做法,用来判断该脚本是直接运行还是被导入到其他脚本中作为模块。直接运行时,会执行main函数。

  4. max_workers:这是ThreadPoolExecutor的一个参数,它决定了线程池中的线程数量。你可以根据你的CPU核心数和IO操作的需求来调整这个值。在这个例子中,我使用了10,但你应该根据你的具体环境来设置这个值。

注意:虽然多线程可以提高IO密集型任务的效率,但每个线程的创建和销毁都需要一定的开销。此外,由于Python的全局解释器锁(GIL),多线程在CPU密集型任务上可能不会带来太大的性能提升。然而,对于文件复制这样的IO密集型任务,多线程是非常有用的。

多线程修改json文件

import json
import glob
from concurrent.futures import ThreadPoolExecutorlabelme_path = "../Labelme_data/"# 定义一个函数来处理单个文件
def process_file(file_path):with open(file_path, "r", encoding="utf-8") as f:json_file = json.load(f)shapes = json_file['shapes']print(shapes)for shape in shapes:if shape['label'] == 'f16':shape['label'] = 'person'elif shape['label'] == 'f35':shape['label'] = 'other'with open(file_path, 'w') as f:json.dump(json_file, f, indent=4)# 3. 获取待处理文件files = glob.glob(labelme_path + "*.json")# 使用ThreadPoolExecutor来并行处理文件
with ThreadPoolExecutor(max_workers=40) as executor:  # 可以根据机器性能调整max_workersexecutor.map(process_file, files)print("所有文件处理完成。")

相关文章:

python 线程池处理文件

使用多线程来加速文件复制的过程,可以使用Python的concurrent.futures模块中的ThreadPoolExecutor。代码如下: import glob import os import shutil from concurrent.futures import ThreadPoolExecutordef copy_image(image):imagepath image.replace…...

AI技术和大模型对人才市场的影响

012024 AI技术和大模型 2024年AI技术和大模型呈现出多元化和深入融合的趋势,以下是一些关键的技术方向和特点: 1. 生成式AI 生成式AI(Generative AI)在2024年继续快速发展,它能够创造全新的内容,而不仅仅…...

解释“location”和“position”

Explanation of “Location” and “Position” Location and position are terms often used interchangeably in everyday language, but they can have distinct meanings depending on the context. Below, we explore their definitions, differences, and examples of u…...

Netty 必知必会(三)—— ByteBuf

Netty ByteBuf工作原理,和NIO里ByteBuffer区别? Java NIO 提供了ByteBuffer 作为它 的字节容器,但是这个类使⽤起来过于复杂,⽽且也有些繁琐。 ByteBuf是Netty框架中的一个关键类,专门设计来处理字节数据,…...

芋道以开源之名行下作之事 恬不知耻 标榜自己开源 公开源码+sql 不用再加入知识星球

资源 链接: https://pan.baidu.com/s/1TeuxbAUfLQ5_BqMBF1kniQ?pwdcqud 提 取码: cqud 依次为后端、补充版的sql、前端 此文档内安装部署等一应俱全...

wordpress中,wp_posts 文章的状态 有哪些,分别对应什么数值

在WordPress中,wp_posts 表存储了网站上的所有内容,包括文章(posts)、页面(pages)、自定义文章类型(custom post types)等。这个表有一个名为 post_status 的字段,用于标…...

输入成绩问题(c语言)

1.问题:期中考试开始了,大家想要取得好成绩,争夺前五名,从键盘输入n个学生成绩(不超过40个),输出每组的前五名的成绩 两行,第一行输入一个整数,表示n个学生(…...

基于域名+基于ip+基于端口的虚拟主机+上线商务系统

一、回顾 1.jdk环境 tomcat服务器需要jdk环境 版本对应 ​ tomcat9>jdk1.8 配置系统变量JAVA_HOME sed -i $aexport JAVA_HOME/usr/local/jdk22/ /etc/profile sed -i $aexport PATH$JAVA_HOME/bin:$PATH /etc/profile ​ source /etc/profile ​ java -version java…...

vue每次路由跳转前将页面滚动到顶部

在Vue.js应用中,特别是使用Vue Router进行页面路由管理时,router.beforeEach是一个非常有用的导航守卫(Navigation Guard)。它允许你在路由跳转之前执行一些逻辑,比如权限验证、页面跳转前的数据加载、滚动位置重置等。…...

【Qt】QDateTimeEdit

在Qt中,QDateEdit是用于选择日期的微调框,QTimeEdit是用于选择小时和分钟的微调框 QDateTimeEdit则是基于QDateEdit和QTimeEdit的组合控件,能够同时显示日期和时间,并允许用户以交互方式编辑日期 常用属性 属性说明dateTime时间…...

Redis和Mysql如何保持数据一致性

一般情况下,Redis是用来实现应用和数据库之间读操作得缓存层,主要目的是减少数据库IO,还可以提升数据的IO性能。 当应用程序需要去读取某个数据时,会首先尝试去Redis里面加载,如果命中就直接返回,如果没有…...

Java中Optional相关

Java中Optional相关 orElse 提供默认值以确保不会返回 null。 适用于默认情况下的备选值或简单计算结果。 // 如果 optionalName 为空&#xff0c;返回 "Unknown" Optional<String> optionalName Optional.empty(); String result optionalName.orElse(&q…...

AI在HR候选人关系管理中的革新应用

一、引言 随着人工智能&#xff08;AI&#xff09;技术的快速发展&#xff0c;其在人力资源管理&#xff08;HR&#xff09;领域的应用也日益广泛。特别是在候选人关系管理方面&#xff0c;AI技术不仅提高了管理效率&#xff0c;还使得候选人体验得到了极大的改善。本文将深入分…...

HTML+CSS+JavaScript制作七夕表白网页(含音乐+自定义文字+烟花特效)

利用HTMLCSSJavaScript制作了一个简单的七夕表白网页&#xff1a; 这是一个简单的表白功能&#xff0c;可以用于小哥哥小姐姐在情人节向心爱的人表白使用点击信封中间的爱心&#xff0c;会出现一封信由信封向外展开&#xff0c;与此同时会有烟花绽放&#xff0c;并且自动播放背…...

【Python机器学习系列】一文教你实现决策树模型可视化(案例+源码)

这是我的第335篇原创文章。 一、引言 决策树是一个有监督分类模型&#xff0c;本质是选择一个最大信息增益的特征值进行输的分割&#xff0c;直到达到结束条件或叶子节点纯度达到阈值。根据分割指标和分割方法&#xff0c;可分为&#xff1a;ID3、C4.5、CART算法。每一种颜色代…...

如何在Python中使用网页抓取API获得Google搜索结果

SERP是搜索引擎结果页的缩写&#xff0c;它是你在百度、谷歌、Bing等搜索引擎中提交查询后所得到的页面。搜索引擎需要给所有页面做排序&#xff0c;把最能解决我们需求的页面展示给我们&#xff0c;企业会非常关注结果页的排序&#xff0c;也就是本企业内容的自然排名情况。手…...

Postman高频面试题及答案汇总(接口测试必备)

Postman在软件测试的面试中&#xff0c;可以说是必考题了&#xff0c;既然是高频考题&#xff0c;当然得为粉丝宝宝们整理一波题库喽~ 一、Postman在工作中使用流程是什么样的&#xff1f; 二、你使用过Postman的哪些功能&#xff1f; 三、Postman如何管理测试环境&#xff…...

JavaEE 初阶(13)——多线程11之“定时器”

目录 一. 什么是“定时器” 二. 标准库的定时器 三. 定时器的实现 MyTimer 3.1 分析思路 1. 创建执行任务的类。 2. 管理任务 3. 执行任务 3.2 线程安全问题 四. 拓展 一. 什么是“定时器” 定时器是软件开发中的一个重要组件&#xff0c;类似于一个“闹钟”&#xff0…...

2024最新全开源付费进群系统源码二开修复版 支持易支付

内容目录 一、详细介绍二、效果展示1.部分代码2.效果图展示 三、学习资料下载 一、详细介绍 全开源付费进群系统源码&#xff0c;开源无加密无授权&#xff0c;优化电脑端访问布局&#xff0c;支持dai理&#xff0c;对接易支付通道&#xff0c;dai理可以配置自己易支付接口&am…...

【奥顺苹果CMS二开泛目录4.X版】PHP站群程序新增首页堆砌关键词新增四套seo模板

演示站&#xff08;赠送四套模板&#xff09;&#xff1a; https://macfan.qdwantong.com https://macfan2.qdwantong.com https://macfan3.qdwantong.com https://macfan4.qdwantong.com 4.X版程序特色功能&#xff1a; 后台除了可以设置干扰码、转码、插入符号和拼音这…...

day06 项目实践:router,axios

vue组件的生命周期钩子 今天几乎没有讲什么新内容&#xff0c;就是一起做项目&#xff0c;只有一个小小的知识点&#xff0c;就是关于vue组件的生命周期钩子&#xff0c;其中最重要的四个函数—— beforeCreate()&#xff1a;组件创建之间执行 created()&#xff1a;组件创建…...

⌈ 传知代码 ⌋ 基于矩阵乘积态的生成模型

&#x1f49b;前情提要&#x1f49b; 本文是传知代码平台中的相关前沿知识与技术的分享~ 接下来我们即将进入一个全新的空间&#xff0c;对技术有一个全新的视角~ 本文所涉及所有资源均在传知代码平台可获取 以下的内容一定会让你对AI 赋能时代有一个颠覆性的认识哦&#x…...

软件测试必备技能

在软件测试领域&#xff0c;以下是一些必备的技能和能力&#xff0c;可以帮助你成为一名优秀的软件测试工程师&#xff1a; 1. 测试基础知识&#xff1a; 熟悉软件测试的基本概念、原则和流程&#xff0c;包括不同类型的测试&#xff08;如单元测试、集成测试、系统测试&#…...

TL3568编译uboot报错

编译uboot前&#xff0c;需要 ① sudo apt-get install device-tree-compiler 否则会报“ERROR: No dtc” ② sudo apt install python 装个Python2&#xff0c;否则会报“ERROR: No python2”...

qiankun 微前端 隔离子应用样式,解决 ant-design-vue 子应用样式污染问题(已落地)

样式冲突产生原因 先分析乾坤qiankun 构建之后&#xff0c;会根据你的配置 给每个子应用生成一个id&#xff0c; 当加载到对应子应用的时候&#xff0c;就把内容放到对应的id 标签里去&#xff0c; 这样能有效的隔离 js 代码&#xff0c;但是样式是加载在全局的 所以 当两个子…...

一个前后端分离架构的低代码开发平台,支持微服务架构,支持开发SAAS项目(附源码)

前言 在当前的企业软件开发领域&#xff0c;开发者常常面临着代码重复性高、开发效率低、项目周期长等挑战。现有的软件解-决方案往往难以满足快速变化的市场需求&#xff0c;特别是在SAAS项目、企业信息管理系统&#xff08;MIS&#xff09;、内部办公系统&#xff08;OA&…...

whisper+whisperx ASR加对齐

忘了怎么安装了&#xff0c;这里记录一下整理出来的类&#xff0c;不过这个 from chj.comm.pic import *import json import whisper import whisperx import gcclass Warp_whisper:def __init__(self, language"zh", device"cuda", compute_type"fl…...

【已解决】YOLOv8加载模型报错:super().__init__(torch._C.PyTorchFileReader(name_or_buffer))

《博主简介》 小伙伴们好&#xff0c;我是阿旭。专注于人工智能、AIGC、python、计算机视觉相关分享研究。 ✌更多学习资源&#xff0c;可关注公-仲-hao:【阿旭算法与机器学习】&#xff0c;共同学习交流~ &#x1f44d;感谢小伙伴们点赞、关注&#xff01; 《------往期经典推…...

中国象棋 纯网页前端 演示与下载

https://andi.cn/app/chess/...

学习大数据DAY29 python基础语法2

目录 调试---debug tuple&#xff08;元组&#xff09; set&#xff08;集合&#xff09; dict&#xff08;字典&#xff09; 转换 推导式 上机练习 3 函数 参数 不定长参数 值传递与引用传递 局部和全局变量 上机练习 4 调试---debug 1. 先设置断点 2. 点击调试…...

网站建设的问题/站长工具的使用seo综合查询运营

目录 概述 1应用问题 1数据来源 2实现算法 3 4.1 软件界面 3 4.2 优化算法 4 4.3 实现细节 8实验结果与分析 9 5.1 目标函数值可视化 9 5.2 结果 9 5.2.1 暴力算法 10 5.2.2 梯度下降法 11 5.2.3 模拟退火算法 11 5.3 参数调整 12 5.4 分析与结论 12 1.概述 本次实验中&#…...

刷网站关/关键词挖掘工具免费

小程序的官方文档中有这样一段话自基础库版本 1.5.0 起&#xff0c;触摸类事件支持捕获阶段。捕获阶段位于冒泡阶段之前&#xff0c;且在捕获阶段中&#xff0c;事件到达节点的顺序与冒泡阶段恰好相反。需要在捕获阶段监听事件时&#xff0c;可以采用capture-bind、capture-cat…...

嘉兴网站建设999 999/下载百度到桌面上

Docker 完全指南 原作者地址: https://wdxtub.com/2017/05/01/docker-guide/ 发表于 2017-05-01 | 更新于 2017-08-03 | 分类于 Technique | | 1669 3,950 | 15Docker 作为新瓶装旧酒的一门技术&#xff0c;用简单便捷的操作极大改变了软件开发的流程与生态环境&#xff0…...

做网站的策划书/百度网站登录

标题 / 关键词 / 描述title / keywords / description{dede:field.title/} - {dede:global.cfg_webname/}获取顶级栏目相关信息gettoptype(me,typename){dede:field.typeid functiongettoptype(me,typename)/}获取上级栏目相关信息getredtype(me,typename){dede:field.typeid f…...

制作器/抖音优化排名

ID&#xff1a;fuchen1994 姓名&#xff1a;江军 作业要求&#xff1a; 理解Linux系统中进程调度的时机&#xff0c;可以在内核代码中搜索schedule()函数&#xff0c;看都是哪里调用了schedule()&#xff0c;判断我们课程内容中的总结是否准确&#xff1b; 使用gdb跟踪分析一…...

做网站税点/seo推广优化多少钱

首先&#xff0c;先明确进制中的两个基本概念。基&#xff1a;二进制的基为二&#xff0c;八进制的基为八&#xff0c;十进制的基为十&#xff0c;十六进制的基为十六&#xff0c;以此类推。位权&#xff1a;以小数点开始&#xff0c;依次向左右两边编号&#xff0c;向左为0,1,…...