linux修改小文件的读写速度,Python:数百万个小文件的读写速度慢

Benjamin Intal

14

python

io

file

结论:

似乎HDF5是我的目的.基本上" HDF5是用于存储和管理数据的数据模型,库和文件格式. "并且旨在处理大量数据.它有一个名为python-tables的Python模块.(链接在下面的答案中)

HDF5在节省数吨和大量数据方面完成了1000%的工作.从2亿行读取/修改数据虽然很痛苦,但这是下一个要解决的问题.

我正在构建具有大量子目录和文件的目录树.大约有1000万个文件分布在十万个目录中.每个文件都在32个子目录下.

我有一个python脚本,可以构建这个文件系统并读取和写入这些文件.问题是当我达到一百多万个文件时,读写方法变得非常慢.

这是我的函数,它读取文件的内容(文件包含一个整数字符串),向其添加一定数量,然后将其写回原始文件.

def addInFile(path, scoreToAdd):

num = scoreToAdd

try:

shutil.copyfile(path, '/tmp/tmp.txt')

fp = open('/tmp/tmp.txt', 'r')

num += int(fp.readlines()[0])

fp.close()

except:

pass

fp = open('/tmp/tmp.txt', 'w')

fp.write(str(num))

fp.close()

shutil.copyfile('/tmp/tmp.txt', path)

关系数据库对于访问这些数据似乎太慢了,所以我选择了一种文件系统方法.

我之前尝试过为这些执行linux控制台命令,但速度要慢一些.

我首先将文件复制到临时文件然后访问/修改它然后将其复制回来,因为我发现这比直接访问文件更快.

将所有文件放入1个目录(采用reiserfs格式)会导致访问文件时速度过慢.

我认为减速的原因是因为有大量的文件.执行此功能1000次,时间不到一秒......但现在达到1分钟.

你怎么建议我解决这个问题?我是否更改了目录树结构?

我只需要快速访问这个庞大的文件池中的每个文件*

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值