Python 支持的读取速度最快的文件格式是什么?

2017-06-30 17:16:40 +08:00
 chenminghit
我想用 python 对一堆数据进行处理,之后供 tensorflow 使用。不知道应该将这堆数据转成什么格式(最好是跨平台的),才能读取速度最快。
这些数据大小约 200G ( matlab 的 mat 格式),是由很多很多的小文件组成的,里面的内容是格式化的数字和字符。
5809 次点击
所在节点    Python
17 条回复
chenminghit
2017-06-30 17:21:23 +08:00
HDF5 怎么样? google 到了这个。
aaronzjw
2017-06-30 17:33:55 +08:00
了解下 hadoop?
chenminghit
2017-06-30 18:07:17 +08:00
@aaronzjw hadoop 稍微了解一点,这个学习成本太高了,我应该不需要。
0ZXYDDu796nVCFxq
2017-06-30 18:56:11 +08:00
二进制应该是最快的,如果设计良好。
aaronzjw
2017-06-30 18:56:18 +08:00
@chenminghit 不懂啊,没遇到过这么大的文件读取。 能不能压缩一下
aaronzjw
2017-06-30 18:56:57 +08:00
@chenminghit 很多小文件,应该压缩不了多少。。。
AX5N
2017-06-30 19:14:23 +08:00
重点是数量有多少,得看是瓶颈在 i/o 还是在 python。
如果在 i/o 你就提前合并成一个文件(举个例子,例如 iso 文件),然后每次读取一定的大小到内存就可以了。
如果数量太大太大的话,python 光是调用函数消耗就特别大,纯 python 我也不知道有什么办法。你可以试试 for 一个千万位的数字,然后再在循环里进行一次乘法操作,慢到你想吐血(1s 左右的时长)。
comzyh
2017-06-30 19:21:47 +08:00
HDF5 是我见过最好的

其他的可以考虑 pickle, protobuf
ruoyu0088
2017-07-01 07:36:39 +08:00
用 h5py 读写 HDF5。
chenminghit
2017-07-01 11:46:43 +08:00
@AX5N 文件数量大概是 3000*2000 这么多,每个文件大概 30k 这么大。我需要先用 python 预处理一遍文件,把我需要的内容提取出来,以便 tensorflow 调用。这个过程肯定要删掉很多数据,并且做一些归一化。预处理这个过程需要处理多长时间都无所谓,因为只需处理一遍,可以慢慢处理。主要是 tensorflow 调用那个过程要快

看了楼上各位的回复,我觉得我就去研究一下 HDF5 吧。谢谢各位。
zhmin
2017-07-01 14:48:53 +08:00
hdfs 不适合寸小文件
chenminghit
2017-07-01 15:19:55 +08:00
@zhmin 没事,我应该可以将它们拼起来,拼成大文件
chenminghit
2017-07-01 15:20:51 +08:00
@zhmin sorry,看成了 hdf5
hsyu53
2017-07-01 18:27:32 +08:00
可以试试 netcdf4,built on hdf5
chenminghit
2017-07-01 19:53:09 +08:00
@hsyu53 谢谢。我学习一下
ecloud
2017-07-02 02:52:22 +08:00
Berkley DB
fiht
2017-07-02 11:25:37 +08:00
我感觉没有什么问题啊。
就是读取六百万个文件然后处理之后再保存下来然后丢给 TensorFlow 去处理。
你讲处理六百万个文件速度慢一点没关系因为是一次性处理的
那 TensorFlow 那边速度快不快得看机器配置啊 (我没实际用过 TensorFlow
你把六百万个文件挨个读取之后保存成一个 pkl 文件,然后下次要使用的时候直接 load 进来就可以。
搞机器学习的应该很有钱,所以不用考虑内存不足的问题
关注一波楼主,对这个很感兴趣,只是现在没时间没设备,搞不了这个

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/372211

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX