在我的模拟程序中,我一步计算大约50个数字,并重复此步骤约100000次。我需要保存所有这些数字来绘制它们。
我使用python,我想了两种方法。
我实际上是通过第一种方式制作了这个程序,比如
for i in range(100000):
data.append(calculated numbers)
但我认为这太浪费了内存。 但我也认为第二种方式比第一种方式慢(?)。
在这种情况下,什么是有效的方式?
答案 0 :(得分:2)
您需要批量计算数字并随时将它们写入磁盘。根据您使用的文件系统,您需要写入大于特定块大小的文件以避免过多的磁盘写入。方法2中的性能损失应该是因为您正在触发100000次磁盘写入。相反,每1000个周期后写入磁盘。然后,您只有100个磁盘写入,但一次只能使用大约50,000个内存。然后你有很高的性能并且保持在RAM限制范围内。
另外,考虑使用xrange而不是range,这样就不会为了循环而分配100000个数字的列表。
答案 1 :(得分:1)
您应该使用NumPy将数字存储在数组中(示例中的维度为(50, 100000)
)。如果您需要存储它们,NumPy具有使用高效二进制格式的save()
和load()
函数。
答案 2 :(得分:1)
最小化内存的一种方法是您可以使用xrange
代替range
来最小化内存使用。