使用Sage的保存和加载方法会导致高内存使用率

时间:2015-08-16 00:15:34

标签: python memory-management sage

我正在使用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方法会导致相同的行为。

0 个答案:

没有答案