【问题标题】:Better way to store a set of files with arrays?用数组存储一组文件的更好方法?
【发布时间】:2015-02-22 20:24:09
【问题描述】:

我已经积累了 500 个左右的文件,每个文件都有一个存储元数据的数组和标题。比如:

2,.25,.9,26 #<-- header, which is actually cryptic metadata 1.7331,0 1.7163,0 1.7042,0 1.6951,0 1.6881,0 1.6825,0 1.678,0 1.6743,0 1.6713,0

我想有选择地将这些数组读入内存。我们构建了一个 GUI,允许用户从磁盘中选择一个或多个文件,然后将每个文件读入程序。如果用户想读入所有 500 个文件,程序打开和关闭每个文件的速度都很慢。因此,我的问题是:将所有这些存储在一个结构中会加速我的程序吗? hdf5之类的?理想情况下,这将比单个文件具有更快的访问速度。解决此问题的最佳方法是什么?我从来没有处理过这些类型的考虑。在 Python 中加速这个瓶颈的最佳方法是什么?总数据只有几兆字节,我什至可以将它存储在程序中的某个地方,而不仅仅是在磁盘上(但不知道如何做到这一点)

【问题讨论】:

  • 你们认为既然数据集实际上不是很大,将它们存储在像pandas DataFrame这样的对象中,然后简单地序列化它,会比从文件中读取更快吗?还是有更好的对象?
  • np.savez 将一组数组保存在未压缩的 zip 存档中,每个文件一个变量。 np.load 返回这些变量的“字典”。
  • 谢谢。我打算用 json 解决,但也许 savez 是要走的路。

标签: python database numpy dataset storage


【解决方案1】:

在 python 中读取 500 个文件应该不会花费太多时间,因为整体文件大小约为几 MB。您的文件块中的数据结构简单明了,我猜它甚至不需要太多时间来解析。

打开和关闭文件的实际速度是否慢,那么可能是操作系统相关的问题(它可能有很差的 I/O。)

您是否按照读取所有文件所需的时间来计时?

您也可以尝试使用小型数据库结构,例如 sqllite。您可以在哪里存储文件数据并快速访问所需数据。

【讨论】:

  • 嗯,也许我的瓶颈在别处。谢谢
猜你喜欢
  • 2019-08-07
  • 1970-01-01
  • 2022-01-27
  • 2012-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-20
相关资源
最近更新 更多