有效的方法来保存数据

时间:2014-07-30 08:52:48

标签: python

在我的模拟程序中,我一步计算大约50个数字,并重复此步骤约100000次。我需要保存所有这些数字来绘制它们。

我使用python,我想了两种方法。

  1. 通过将这些数字附加到列表或
  2. ,立即进行所有计算
  3. 对于每个步骤,在文件中写入50个数字,然后重复此操作。
  4. 我实际上是通过第一种方式制作了这个程序,比如

    for i in range(100000):
        data.append(calculated numbers)
    

    但我认为这太浪费了内存。 但我也认为第二种方式比第一种方式慢(?)。

    在这种情况下,什么是有效的方式?

3 个答案:

答案 0 :(得分:2)

您需要批量计算数字并随时将它们写入磁盘。根据您使用的文件系统,您需要写入大于特定块大小的文件以避免过多的磁盘写入。方法2中的性能损失应该是因为您正在触发100000次磁盘写入。相反,每1000个周期后写入磁盘。然后,您只有100个磁盘写入,但一次只能使用大约50,000个内存。然后你有很高的性能并且保持在RAM限制范围内。

另外,考虑使用xrange而不是range,这样就不会为了循环而分配100000个数字的列表。

答案 1 :(得分:1)

您应该使用NumPy将数字存储在数组中(示例中的维度为(50, 100000))。如果您需要存储它们,NumPy具有使用高效二进制格式的save()load()函数。

答案 2 :(得分:1)

最小化内存的一种方法是您可以使用xrange代替range来最小化内存使用。