python - 加快打开文件
问题描述
我发现我的脚本通过内置open(filename, "rb")
函数花费了其运行时打开(二进制)文件的很大一部分。根据我的分析器,7890 次调用open
花费 129.2 秒,平均每次调用大约 16.4 毫秒。这对我来说似乎有点高。(特别是考虑到读取所述文件内容的总时间仅为 25 秒,即使典型文件的大小约为 MB(数量级)。)
我想知道是否有办法让我加快速度,但我不太了解该open
功能在幕后的作用。具体来说:
- 这些文件位于我的存储磁盘上,老式的 7200 RPM 磁盘。如果我将它们转储到我的 SSD 上会加快速度吗?(我想这会导致读取文件比打开文件慢。)
- 有问题的文件具有相对较深(9 层)的文件夹结构。这会影响打开文件的速度吗?(即操作系统是否必须花费更多时间将文件路径(字符串)转换为磁盘上的位置?)
解决方案
open 函数的 python 端不应该是性能问题。它通常是底层操作系统公开调用。检查您是否有一些防病毒软件可以为每个公开呼叫做一些事情。每次打开调用的 16 毫秒异常高。在我的机器上打开冷文件的时间低于 100 微秒。
如果您在 linux 上并且对此进行调查是值得的,那么请尝试 strace 和 perf。 http://www.brendangregg.com/linuxperf.html
推荐阅读
- python - 如何让 if elif else 语句重新启动
- hive - 使用 hive 中的子查询创建表
- python - 如何使用 DataflowPythonOperator 通过 Apache Airflow 运行 Apache Beam 数据管道
- python - 使用validation_split,我在训练它时遇到错误:传递给模型的数组列表大小错误
- php - 试图将此 BASH 代码转换为 PHP 代码,但遇到了一些问题
- reactjs - 当 jsx 类型是函数时,如何禁用道具检查?
- apache-spark - 如何使用正则表达式替换值
- python - 如何将密集层参数的数据类型设置为float16?
- vba - 将具有相似工作表名称的多个工作表复制到新工作簿中
- javascript - 高阶函数执行