【问题标题】:Python: Read/write large number of small filesPython:读/写大量小文件
【发布时间】:2019-11-05 07:51:13
【问题描述】:

我需要处理大量(大约 60K)小文件( 我正在使用具有标准读/写功能的 Python 3,性能真的很差。
你知道 Python 是否有任何库支持这种情况? 或者我该怎么做才能获得更好的性能?
非常感谢!

【问题讨论】:

  • 发布您的代码。 性能真的很差是什么意思?
  • 您想在一分钟内写入 60k 个文件并上传?不要以为它可以那么快(不包括上传速度),我不明白你说的性能差是什么意思,是速度?
  • 您在处理过程中做了什么?我怀疑您是否能够在不进行任何处理的情况下快速打开、关闭和上传这么多文件,但是在不知道您在处理过程中做了什么的情况下,我们无法帮助您确定真正的(和可解决的)性能问题在哪里.
  • 感谢 cmets。我需要每分钟处理一次这些文件,所以我需要不到 1 分钟的处理时间来确保在新处理开始之前完成当前处理。我所说的性能不佳的意思是处理时间需要更长的时间并使我的系统挂起。我只是在处理中做一些简单的事情,比如删除空行

标签: python io


【解决方案1】:

请记住,I/O 操作繁重,写入或读取文件有开销。

写入 1024 个新文件,每个文件大小为 1kb,这比写入一个 1mb 的新文件要花费更长的时间。 你打开系统的每个文件都需要在你的文件系统上找到一个位置并写入它的元数据。

因此,无论您计划做什么,您的表现可能都不会出色,但我建议您确保尽最大努力实现最少的操作(即上传所有文件到 FTP 服务器,而不是打开每个文件的连接并自行上传)。
我建议你从你的代码中发布一个 sn-p,这样人们就可以帮助你确保代码是最小的

【讨论】:

  • 感谢您的评论。我也意识到了这一点。我只是想知道我们是否有更好的方法来读/写文件,因为目前我使用 "with open file .. as f" , "f.read", "f.write" 结果不好。
  • 请发布您的代码的 sn-p,以便我们更好地理解它,正如我在评论中所说 - I/O 操作很繁重,但您可能会从您的另一部分削减一些时间可能不是最有效的代码
  • 谢谢@kaki gadol,但我的处理部分很简单,只有一行代码,例如:if not line.strip(): output.append(line) 所以我认为我们不能优化它
  • 我不是在说这部分。。这段代码的其他部分与您的问题有关,例如您打开每个文件并保存每个文件的部分。我现在不确定(我们可以检查一下),但也许不遍历每一行会更快
猜你喜欢
  • 2012-02-12
  • 2017-11-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多