python 异步读取文件,速度变快了吗
“python 异步读取文件,速度变快了吗”
当我问出这个问题,大部分人第一反应应该是python新人,不懂异步
首先说一下我对异步的理解:
- asyncio 是 gevent + greenlet 的组合
- gevent 底层使用了libev、selectors 模块,这两个模块是检测io操作的,selectors 调用了c函数select(),是io多路复用的,其中一个参数的fds,就是等待多个文件就绪,也就是进行多个io等待
- gevent用greenlet切换协程任务用的
贴一个select模块的地址:select --- 等待 I/O 完成 — Python 3.13.0rc2 文档
白话:多个协程任务的io等待是可以同时进行的,因此减少了程序运行的总时间
asyncio的教程大致两个示例
1.asyncio.sleep(delay) 2.requests.get(url)
没毛病,时间确实减少了,但是网上没看到文件读取的示例,最后说 你们看,用了异步方式读取文件,时间减少了。测试一下 :
case1:文件大小500kb,数量3个
case2:文件大小500kb,数量500个
case3:文件大小80Mb,数量3个
case4:文件大小80Mb,数量500个
经过我的测试,以上4个case情况一样,异步没有减少读取时间,那就用case3作为例子
异步方式读取文件
jmeter.log 文件大小80Mb,数量3个
async def read_file_async(file_path):print(f'start read {file_path}')async with aiofiles.open(file_path, 'r') as f:content = await f.read()print(f'read finish')async def main():files = ['jmeter.log','jmeter.log','jmeter.log']now = lambda : time.time()start = now()task_list = [read_file_async(file) for file in files]await asyncio.gather(*task_list)print(now()-start)asyncio.run(main())
运行结果
start read jmeter.log
start read jmeter.log
start read jmeter.log
read finish
read finish
read finish
0.25398802757263184
速度没有加快
接下来的问题,什么原因呢,我的答案是 我也不清楚
其实我试了asyncio、gevent、多线程、多进程、同步读取,比较下来,只有多进程会减少时间
不过不用担心,文件读取速度很快,一般情况不用考虑文件读取速度,真想提高,有人跟我说买更贵的ssd
相关文章:

python 异步读取文件,速度变快了吗
“python 异步读取文件,速度变快了吗” 当我问出这个问题,大部分人第一反应应该是python新人,不懂异步 首先说一下我对异步的理解: asyncio 是 gevent greenlet 的组合gevent 底层使用了libev、selectors 模块,这两…...

【Python】Anaconda插件:Sublime Text中的Python开发利器
上班的时候没人问我苦不苦,下班的时候总有人问为什么走这么早。 Anaconda 是一个专为Sublime Text打造的开源Python开发插件,旨在为开发者提供类似于IDE的丰富功能,提升Python编码效率。该插件提供了代码补全、语法检查、代码片段提示等多项…...

Python酷库之旅-第三方库Pandas(123)
目录 一、用法精讲 546、pandas.DataFrame.ffill方法 546-1、语法 546-2、参数 546-3、功能 546-4、返回值 546-5、说明 546-6、用法 546-6-1、数据准备 546-6-2、代码示例 546-6-3、结果输出 547、pandas.DataFrame.fillna方法 547-1、语法 547-2、参数 547-3、…...

IEEE投稿 IEEE Geoscience and Remote Sensing Letters
IEEE 应用地球观测与遥感专题杂志 journal of Selected Topics in Applied Earth Observations and Remote Sensing IEEE 文章提交流程 撰写文章并准备好图形后,您可以提交文章以供审核。请按照以下步骤完成 IEEE 文章提交流程。 选择目标期刊 如果文章超出期刊范围…...

【华为杯】2024华为杯数模研赛D题 解题思路
题目 大数据驱动的地理综合问题 问题1: 19902020年间中国范围内降水量和土地利用/土地覆被类型的时空演化特征描述? 解题思路 详细分析:此问题要求对降水量(连续变化变量)和土地利用/覆被(离散变化变量)进行时空演…...

Ubuntu20.04 搜索不到任何蓝牙设备
电脑信息 联想扬天YangTianT4900k 问题描述 打开蓝牙之后,一直转圈,搜索不到任何蓝牙设备 排查 dmesg | grep -i blue 有如下错误: Bluetooth: hci0: RTL: unknown IC info, lmp subver 8852, hci rev 000b, hci ver 000b lsusb 芯片型号如…...

【2024】MySQL账户管理
当前MySQL版本为: mysql> select version(); ----------- | version() | ----------- | 8.4.2 | ----------- 1 row in set (0.01 sec)目录 创建普通用户为用户授权查看用户权限修改用户权限修改用户密码删除用户 创建普通用户 使用CREATE USER语句创建用户…...

轻量级流密码算法Trivium
轻量级流密码算法Trivium 0x0 Trivium算法简介 Trivium算法是由C.D Canniere和B.Preneel共同设计的一套对称加密算法,Trivium密码算法采用了分组密码和非线性反馈移位寄存器的设计思路。该密码算法总共288比特的内部状态,其中有…...

MapReduce基本原理
目录 整体执行流程 Map端执行流程 Reduce端执行流程 Shuffle执行流程 整体执行流程 八部曲 读取数据--> 定义map --> 分区 --> 排序 --> 规约 --> 分组 --> 定义reduce --> 输出数据 首先将文件进行切片(block)处理ÿ…...

数据结构之栈(python)
栈(顺序栈与链栈) 1.栈存储结构1.1栈的基本介绍1.2进栈和出栈1.3栈的具体实现1.4栈的应用例一例二例三 2.顺序栈及基本操作(包含入栈和出栈)2.1顺序栈的基础介绍2.2顺序栈元素入栈2.3顺序栈元素出栈2.4顺序栈的表示和实现 3.链栈及…...

浅谈人工智能之基于HTTP方式调用本地QWen OPenAI接口(Java版)
浅谈人工智能之基于HTTP方式调用本地QWen OPenAI接口(Java版) 概述 Qwen是阿里云推出的一款超大规模语言模型,其强大的自然语言处理能力使其成为开发智能应用的热门选择。本文将指导你如何使用Java通过HTTP方式调用Qwen的OpenAI接口&#x…...

【python设计模式7】行为型模式2
目录 策略模式 模板方法模式 策略模式 定义一个个算法,把它们封装起来,并且使它们可以相互替换。本模式使得算法可独立于使用它的客户而变化。角色有:抽象策略、具体策略和上下文。 from abc import abstractmethod, ABCMeta from datetim…...

基于PHP的CRM管理系统源码/客户关系管理CRM系统源码/php源码/附安装教程
源码简介: 这是一款基于PHP开发的CRM管理系统源码,全称客户关系管理CRM系统源码,它是由php源码开发的,还附带了一整套详细的安装教程哦! 功能亮点: 1、公海管理神器:不仅能搞定公海类型&…...

【乐企】基础版接口代码实现
本文主要是基础版接口声明的实现,具体接口声明见基础版接口声明。具体请求工具类见接口请求工具类 代码如下: 1、服务编码枚举 /*** User: yanjun.hou* Date: 2024/8/30 14:45* Description:乐企服务编码枚举...

题目--力扣----各位相加
给定一个非负整数 num,反复将各个位上的数字相加,直到结果为一位数。返回这个结果。 示例 1: 输入: num 38 输出: 2 解释: 各位相加的过程为: 38 --> 3 8 --> 11 11 --> 1 1 --> 2 由于 2 是一位数,所以返回 2。…...

git 如何基于某个分支rebase?
文章目录 0. 概要1. 切换到你想要 rebase 的分支2. 执行 rebase 命令3. 解决冲突(如果有)4. 强制推送分支(如果已经推送过该分支) 0. 概要 之前介绍过如下git文章 git merge的三种操作merge, squash merge, 和rebase merge 如何使…...
倒序循环(一)
题目描述 输入一个正整数n,输出从 n~ 1 递减的序列。 输入格式 一行一个整数 n 输出格式 n 行,每行一个符合题目要求的整数 样例数据 样例输入#1 5样例输出#1 5 4 3 2 1样例输入#2 6样例输出#2 6 5 4 3 2 1数据范围 对于100%的数据ÿ…...

Shell篇之编写apache启动脚本
Shell篇之编写apache启动脚本 1. 脚本编写 vim apache_ctl.sh#!/bin/bashfunction_start(){printf "Starting Apaache ...\n"/opt/lanmp/httpd/bin/apachectl start }function_stop(){printf "Stoping Apaache ...\n"/opt/lanmp/httpd/bin/apachectl s…...

头条|司法部公法局局长访谈:推进高水平公立鉴定机构建设!加快推进司法鉴定立法!
主持人:大家好,我是司法部AI主播司政轩。为切实做好党的二十届三中全会精神学习宣传贯彻,积极反映司法部及地方司法行政机关学习全会精神的体会收获和贯彻落实举措,我们推出了“学习宣传贯彻党的二十届三中全会精神--司法行政微访…...

高密原型验证系统解决方案(上篇)
0 引言 随着当今 SoC 设计规模的快速膨胀,仅仅靠几 颗当代最先进的 FPGA 已经无法满足原型验证的需求。简单的增加系统的容量,会遇到系统时钟复位同 步,设计分割以及高速接口和先进 Memory控制器 IP 验证等多重困难。此时,一个商用…...

新产品,推出 MLX90372GVS 第三代 Triaxis® 位置传感器 IC,适用于汽车和工业系统(MLX90372GVS-ACE-308)
Triaxis 旋转和线性位置传感器IC: MLX90372GVS-ACE-103 MLX90372GVS-ACE-108 MLX90372GVS-ACE-301 MLX90372GVS-ACE-200 MLX90372GVS-ACE-208 MLX90372GVS-ACE-303 MLX90372GVS-ACE-300 MLX90372GVS-ACE-350 MLX90372GVS-ACE-100 MLX90372GVS-ACE-101 MLX90372GVS-…...

JAVA毕业设计178—基于Java+Springboot+vue的智能家具管理系统(源代码+数据库+万字论文)
毕设所有选题: https://blog.csdn.net/2303_76227485/article/details/131104075 基于JavaSpringbootvue的智能家具管理系统(源代码数据库万字论文)178 一、系统介绍 本项目前后端分离(可以改为ssm版本),分为用户、管理员两种角色 1、用户࿱…...

掌握 Python 异步上下文管理器
在现代编程中,异步编程已成为处理并发任务的重要手段,特别是在 I/O 密集型应用中。Python 的 asyncio 库提供了强大的工具来编写异步代码。在异步编程中,上下文管理器(context manager)扮演着资源管理的关键角色。本文…...

当你问AI“有点烦”
感到烦躁是很正常的情绪反应,生活中总会有各种各样的压力和挑战让我们感到不安或不舒服。以下是一些建议,希望能帮助你缓解烦躁的情绪: 深呼吸:尝试进行几次深呼吸,这有助于放松身体和减缓心跳,让你的思维从…...

音视频入门基础:AAC专题(3)——AAC的ADTS格式简介
音视频入门基础:AAC专题系列文章: 音视频入门基础:AAC专题(1)——AAC官方文档下载 音视频入门基础:AAC专题(2)——使用FFmpeg命令生成AAC裸流文件 音视频入门基础:AAC…...

高可用web集群面经:集群搭建、nginx+keepalived高可用、prometheus+zabbix监控、nfs+dns
高可用web集群面经:集群搭建、nginxkeepalived高可用、prometheuszabbix监控、nfsdns 高可用web集群面经飞书在线链接🔗: (https://h03yz7idw7.feishu.cn/wiki/Ucj1wWZCGiqR68kripMcC2CLnvd)...

vue3+ts+supermap iclient3d for cesium功能集合
会把各项功能链接放在这 1.vue3配置supermap iclient3d for cesium vue3中使用supermap icilent3d for cesium_npm 引入supermapgis-CSDN博客 2.功能 2.1加载天地图,加载地形,夸大地形 supermap icilent3d for cesium加载地形并夸大地形-CSDN博客 …...

【案例71】配置https之后 IE打不开登陆页面 Uclient没有问题
问题现象 配置https之后 IE打不开登陆页面 Uclient没有问题。 jvm控制台 显示如下 basic: 已调整小应用程序大小且已将其添加到父容器中 basic: PERF: AppletExecutionRunnable - applet.init() BEGIN ; jvmLaunch dt 170755 us, pluginInit dt 722531 us, TotalTime: 89328…...

ROS 设置dhcp option 6 多个地址格式
ROS routeOS 手工设置 dhcp 服务 option 6 多个dns 地址格式。字符串方式...

Python 二级考试
易错点 电脑基础知识 定义学生关系模式如下:Student (S#, Sn, Ssex,class,monitorS#)(其属性分别为学号、学生名、性别、班级和班长学号) 在关系模式中,如果…...