我正在使用SageMath软件来存储和加载大型矩阵,我正在一个单独的终端窗口中使用htop监视程序的内存使用情况。 (有没有更好的方法来了解圣人如何使用记忆?)
显然,在保存和加载对象时,软件会消耗太多内存。任何人都知道发生了什么以及如何解决它?
接下来,显示一个示例代码。评论说,系统在每一步使用的内存:
def include_admin_val_1?
@options[:show_admin]==true
end
def include_admin_val_2?
@options[:show_admin]==true
end
def include_admin_val_3?
@options[:show_admin]==true
end
关闭并开始一个新的圣人会议......
# 211 Mb
A = Matrix.random(RealField(200)['u','v','t'], 200)
# 291 Mb (+ 80 Mb)
save(A, 'A')
# 458 Mb (+ 168 Mb)
# A.sobj has size 8.55 Mb on disk
因此,如果矩阵A占用80Mb,为什么在保存它时几乎会使用它的两倍?而且我不知道如何在不关闭圣人会话的情况下恢复它。另外,为什么在加载A时,又使用几乎两倍的内存?
我的问题似乎与此问题密切相关:
Using Python's pickle in Sage results in high memory usage
但是使用建议的open / write方法会导致相同的行为。