我认为我在使用numpy数组时遇到了内存问题。以下代码已经运行了数小时:
new_data = npy.array([new_x, new_y1, new_y2, new_y3])
private.data = npy.row_stack([private.data, new_data])
其中,new_x、new_y1、new_y2和new_y3均为浮点数。
每秒记录这些数据约5小时后(超过72000个浮点数),程序变得无响应。我认为发生了某种realloc和复制操作,导致进程被淹没。有人知道这是否是发生的情况吗?
我需要一种方法来记录这些数据,而不会遇到这个减速问题。没有办法事先大致知道这个数组的大小。它不一定需要使用numpy数组,但需要类似的东西。有人知道一个好的方法吗?
npy.empty
比npy.zeros
更合适(而且可能稍微快一点)。 - Eric O. Lebigotprivate.data[rowctr] = …
比[rowctr, :]
快得多。 - Eric O. Lebigotnpy.zeros
比npy.empty
稍微快一点(约3%),所以我又改回前者了。但是你建议的索引更改却使速度提高了20%。 - mtrw