python语法:多线程同时处理大量文件

2023-11-17

先写在前面:

thread模块,简单来说,cpu的反复横跳而已:

要写并发机制,还得用多进程multiprocessing模块,想要快速实现的朋友可以看看我这篇文章:

是枝裕和:内:python中的多进程​zhuanlan.zhihu.com图标

 

当然threads也是有用的(轻量,简易,操作简单)

大家可以看我下面举例子

 


 

多线程是什么?

多线程类似于同时执行多个不同程序,多线程运行有如下优点:

使用线程可以把占据长时间的程序中的任务放到后台去处理。

用户界面可以更加吸引人,这样比如用户点击了一个按钮去触发某些事件的处理,可以弹出一个进度条来显示处理的进度。

程序的运行速度可能加快。

在一些等待的任务实现上如用户输入、文件读写和网络收发数据等,线程就比较有用了。在这种情况下我们可以释放一些珍贵的资源如内存占用等等。

我拿两个视频做简单的对比:

 

开多线程

 

循环处理文件


 

 

那学习多线程对数据分析有什么作用呢,我们可以看看:

现在我有0,1,2三个csv文件,如果我要获取数据并分析,例如用for循环,那只能按顺序读取,这样就会造成效率低下:

代码如下:

import operator
import csv
import os
def read_file(filpos,i):
    with open(filpos+str(i)+".csv") as f:
        reader=csv.reader(f)
        for i in reader:
            print(i)

for i in range(0,3):
    read=read_file("D:/zhihu/",i)

当然你觉得没什么问题,但是如果有20个文件,每个文件有20000条数据,这种方法就会显得非常愚笨,所以我们可以采用多线程的方式同时间读取0,1,2csv文件。

 

 

第一步:import threading 模块

import threading

 

第二步:改下一下代码:

既可以同时打开并运行多个文件

import operator
import csv
import time
import threading
from time import ctime

def read_file(filpos,i):
    with open(filpos+str(i)+".csv") as f:
        reader=csv.reader(f)
        for i in reader:
            print(i)

threads = []
x=0
for t in range(0,3):
    t= threading.Thread(target=read_file,args=("D:/zhihu/",x))
    threads.append(t)
    x+=1
#join在里面时候只有第一个子进程结束才能打开第二个进程,if__name__ 调用时不可用
if __name__=="__main__":
    for thr in threads:
        thr.start()
    thr.join()
    print("all over %s"%ctime())

就是把文件添加到线程池里面,再一起执行。

下班了,这个代码对处理大量文件肯定有用,等会再更新吧..

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

python语法:多线程同时处理大量文件 的相关文章

  • 1Panel 安装部署

    1Panel 是一个现代化 开源的 Linux 服务器运维管理面板 1 环境要求 安装前请确保您的系统符合安装条件 操作系统 支持主流 Linux 发行版本 基于 Debian RedHat 包括国产操作系统 服务器架构 x86 64 aa
  • Limit

    Mysql limit用法 select from test LIMIT 3 当 limit后面跟一个参数的时候 该参数表示要取的数据的数量 表示直接取前三条数据 以下的两种方式均表示取2 3 4三条条数据 select from test
  • R语言深度学习:智能客服聊天机器人

    目录 一 准备工作 二 数据预处理 三 构建模型 1 准备训练数据 2 构建seq2seq模型
  • Ubuntu18.04安装docker及nvidia docker、NVIDIA Container Toolkit

    1 卸载旧版docker sudo apt get remove docker sudo apt get remove auto remove docker sudo apt remove docker ce 如果上面方法都不行直接 使用d
  • PID控制算法学习与Matlab仿真

    文章目录 起因 算法原理 算法解析 调参小技巧 Matlab仿真 起因 PID控制算法应该是包括工业机器人等各种行业和领域中非常常用的一种控制算法了 了解这个算法的起因是在稚晖君开发的自行车项目中见到 后来在北理工组会中了解到PID控制算法
  • ssrf漏洞描述

    ssrf是一种由攻击者构造请求 由服务端发起请求的安全漏洞 一般情况下 ssrf攻击的目标是外网无法访问的内部系统 ssrf漏洞原理 ssrf的形成大多是由于服务端提供了从其他服务器应用获取数据的功能且没有对目标地址做过滤与限制 例如 服务
  • 玄铁C910总览

    一 开源玄铁C910简介 玄铁C910是由平头哥设计并开源的高性能CPU 基于开源的RISC V指令集 主要面向对性能要求严格的边缘计算领域 如边缘服务器 边缘计算卡 高端机器视觉 高端视频监控 自动驾驶 移动智能终端 5G 基站等 玄铁C
  • SAP-ABAP-DOI技术的优化与说明

    SAP ABAP DOI技术的优化与说明 阅后感 不错的一篇文章 自己收藏下 顺带分享给众人 看完本文章后 大家也可以学习下 DOI 的API文档 当有需求直接下载本地时 可以应用CALL i oi document proxy的一个方法S
  • c# 访问共享文件夹 用户名或密码不正确 及 拒绝访问

    组策略 计算机配置 Windows设置 安全设置 本地策略 安全选项 网络访问 本地帐户的共享和安全模型 改为 经典 本地用户以自己身份验证 不改会出现用户名和密码错误 拒绝访问 安全里添加用户
  • day075:XML的约束:DTD约束文档、DTD约束文档的三种引入方法、DTD语法规则

    目录 一 DTD约束 1 什么是DTD约束 2 创建DTD约束文档的步骤 3 代码示例 4 引入DTD约束文档的三种方法 1 引入本地DTD约束文档 2 在xml文件内部引入 3 从网络引入dtd文件 二 DTD语法规则 DTD定义元素 标
  • CodeForces 1025C Plasticine zebra

    题目大意 题目链接 给定一个由w和b组成的字符串 可以操作任意次 每次操作 0次或多次 可以将字符串分割成左右两个子串 左 右侧子串均前后颠倒 问最终字符串中最多可以有多少个w和b交错 w和b无所谓顺序 题解 构造 比较好想 总述 当最左端
  • Stable-Diffusion-WebUI从代码下载到使用技巧

    一 写在前面 本文用于对AI绘画感兴趣但无计算机编程基础的人 包含本人安装和使用过程中的心得 可供新学者参考 心理准备 电脑性能越高越好 最好有高端显卡 如30系以上 低端显卡也可以 速度和质量感人就是 会要求下载一些软件 模型 涉及环境变
  • 判断一个点是否在圆内(三点确定一个圆)

    三角形的外接圆圆心是任意两边的垂直平分线的交点 三角形外接圆圆心叫外心
  • element的滚动去掉横向_textarea去掉滚动条 textarea横向或纵向滚动条的去掉方法

    在IE下文本框textarea会显示滚动条 如下 去掉textarea横向或纵向滚动条办法 可以通过overflow x hidden和overflow y hidden控制横向和纵向滚动条 要设置textarea文本域的滚动条是否开启 使
  • 30 个 Python 教程和技巧

    如果您让任何 Python 程序员讲述 Python 的优势 他会引用简洁和高可读性作为最有影响力的优势 在本 Python 教程中 我们将介绍许多基本的 Python 教程和技巧 这些技巧和技巧将验证上述两点 自从我开始使用 Python
  • 四年Android面试遇到的问题整理,算法太TM重要了

    何为成长 成长是指自我提升 一方面是本身的个人能力 另一方面是社会对你的认可度 最终 程序员的职位和薪水都能在成长中得以体现 很多人对成长有误解 在他们眼中 随着工作年限的提高 成长是理所当然的事情 这其实是一个误区 两个程序员同时工作3年
  • 解决大批量数据导出Excel产生内存溢出的方案

    相关文章 java操作Excel PDF文件 Java操作Excel之理解JXL 读取Excel Java操作Excel之理解JXL 读取Excel模板动态写入数据并生成Excel 推荐圈子 GT Grid 更多相关推荐 POI或者JXL在
  • l05173芯片针脚图_芯片引脚定义

    电源管理芯片引脚定义 1 AGND GND PGND 模拟地 地线 电源地 2 BOOT 次级驱动信号器过流保护输入端 3 COMP 电流补偿控制引脚 4 CT 定时电容 5 DRIVE cpu 外核场管驱动信号输出 6 FAULT 过耗指
  • Protues 8.7:i8086.DLL failed to create DSIM model

    如图所示 8086报错 解决一 换版本 如Protues 7 8 解决二 有的版本i8086 DLL文件不好用 使用这个 链接 https pan baidu com s 1eKniBmf7xJJHwPAxX8dQBg 提取码 8086 文
  • SpringBoot 文件下载功能 IE浏览器汉字乱码问题

    问题描述 今天在实现文件下载并指定文件名称时 遇到文件下载在Google 浏览器下载正常 指定文件名称汉字未乱码 但是在IE11 浏览器上 指定文件名称汉字乱码 问题产生原因 Chrome浏览器可以自动执行两次URL解码 所以下载的文件名是

随机推荐

  • java使用mybatis一次性插入多条数据

    项目场景 java使用ibatis作为持久层框架时如何一次性插入多条数据 问题描述 正常插入一条数据的代码是这样的 mapper insert model 问题分析 这样单条插入是没有问题 问题是遇到多条要连续插入数据的时候循环执行会占用很
  • 提权重启自己

    using System using System Collections Generic using System ComponentModel using System Data using System Drawing using S
  • USB、UART、232串口通信和转换芯片

    USB转RS232串口应用 usb转232 PC技术小能手的博客 CSDN博客 USB直接转RS232 或者先USB 转UART 后UART再转RS232 usb转rs232串口驱动的作用 一文带你读懂UARTTTLRS232 调试血泪经验
  • 全球公链进展

    一周速览 过去一周 明星项目动态如下 以太坊ACDE会议更新 Devnet 9 预计将于9月19日启动 以太坊编程语言 Vyper 发布 v0 3 10 候选版本 Conflux v2 3 0 网络硬分叉升级已完成 Cosmos Hub宣布
  • 微信小程序动态修改数据 list展示

    前沿 我想实现一个动态修改data内数据的功能 试验了几种方式 感觉下面的这种方式最实用 所以记录一下 方便后面的小伙伴来学习 代码 js文件代码 Page data artlist 页面加载时候出发的方法 onLoad function
  • 租房信息采集并做数据分析

    郑州常住人口1260 1万人 跃居中部第一 2020年郑州吸纳的省内其他城市流出人口达368万人 郑州户籍总人口数量为881 6万人 采集分区 二七区 中原区 管城回族区 惠济区 金水区 郑东新区 荥阳市 新郑市 上街区 巩义市 新密市 登
  • AndroidStudio 开发中字符串国际化string.xml与Excel表格的互相导入

    在Android 的开发中有时需要适配国际化 需要将string xml中的字符串导出翻译 然后再将翻译后的字符串导入至AndroidStudio中相应的string xml中 关于国际化的实现 可参考Android适配国际化的三种方式 应
  • DP++转HDMI1.4

    CS5216AN 一 主要特征 符合 VESA 双模式 DisplayPort 标准 版本 1 适用于 2 类电缆适配器应用 包括所需的 2 类电缆适配器标识和控制寄存器以及 I2C over AUX 转换 符合 HDMI 1 4b 规范
  • 2.1 目标检测简介

    目录 2 1 目标检测简介 1 2 1 1 传统的目标检测方法 2 1 2 深度学习时代的目标检测 2 1 目标检测简介1 目标检测是另一项非常重要的计算机视觉任务 图像分类的目的是辨别图片中所包含的主体对象是什么 而目标检测的目标是检测图
  • Prometheus 远程读写 Influxdb

    Prometheus 远程读写 Influxdb Influxdb InfluxDB 是一款开源的时序数据库 是InfluxData 是一个公司 提供时序平台 下的一个产品 使用Go语言开发 时序数据库 Time Series Databa
  • Django2 提示:TemplateDoesNotExist

    编写简单Django2 页面 查询后台数据在前端页面展示 但总是提示TemplateDoesNotExist 资源不存在 第一步 创建资源模板文件夹template 第二步 编辑项目的资源配置setting py TEMPLATES BAC
  • C++ NOIP普及组2017初赛答案版

    CCF NOIP2017 初赛普及组C 语言试题第1 页 共7 页第二十三届全国青少年信息学奥林匹克联赛初赛普及组C 语言试题竞赛时间 2017 年10 月14 日14 30 16 30选手注意 试题纸共有7 页 答题纸共有2 页 满分10
  • 数组实例解析3(杨辉三角)

    根据用户输入的行数n输出对应行数的杨辉三角 具体如下 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1 public class ArrayTraingleTest public static void
  • SpringMVC+ElementUl+Vue实现增、删、改、查、多条件搜索、分页功能(前端后端分离)

    使用vue element springMVC来实现增 删 改 查 搜索 分页这几个功能 对于今天老师留的作业小张与小红对话 一班小红同学对二班小张同学说 今天我们班里学了ElementUl组件可是我学没明白 老师还留了个基于vue Ele
  • HTTP和HTTPS协议的区别

    HTTP 超文本传输协议 和HTTPS 安全超文本传输协议 是用于在客户端和服务器之间传输数据的两种不同的协议 它们之间的主要区别如下 1 安全性 HTTP是明文传输协议 数据在传输过程中是以明文形式发送的 容易被第三方窃取和篡改 而HTT
  • cloudstack 创建与删除VM流程

    创建VM时 用户将命令发给ApiServlet处理 通过调度执行DeployVMCmd的execute方法 它的顺序图如下 删除VM调度执行DestroyVMCmd的execute方法 它的流程图如下 在DestroyVMCmd在执行exe
  • springboot修改默认8080端口

    springboot自带的Tomcat端口是8080 有时候项目多了就会引起端口占用的问题 所以我们需要修改其中的端口或者杀掉8080端口 1 修改springboot端口方法 我们只需要在 application properties 中
  • angularjs中state的参数4_AngularJS路由系列(四)- UI-Router的$state服务、路由事件、获取路由参数...

    http www myexception cn javascript 2041588 html ngularJS路由系列 4 UI Router的 state服务 路由事件 获取路由参数 项目文件结构 node modules public
  • 华为OD机试 - 计算误码率(Java)

    题目描述 误码率是最常用的数据通信传输质量指标 它可以理解为 在多少位数据中出现一位差错 移动通信网络中的误码率主要是指比特误码率 其计算公式如下 比特误码率 错误比特数 传输总比特数 为了简单 我们使用字符串来标识通信的信息 一个字符错误
  • python语法:多线程同时处理大量文件

    先写在前面 thread模块 简单来说 cpu的反复横跳而已 要写并发机制 还得用多进程multiprocessing模块 想要快速实现的朋友可以看看我这篇文章 是枝裕和 内 python中的多进程 zhuanlan zhihu com 当