Python使用大量的RAM来导入文件

时间:2017-06-13 08:59:27

标签: python python-2.7 import

我有一个特征值求解器代码,它执行以下操作:

  • 从另一个程序生成的Python文件中导入一个函数,该程序根据问题以mpmath矩阵或numpy数组的形式保存代数矩阵。
  • 在主脚本中,对变量将采用的值进行评估,或者通过scipy例程优化矩阵中的特定值。

代码工作正常,到目前为止我对它的速度印象深刻。当我增加矩阵大小时,我遇到了麻烦,这导致exernal文件大幅增长。我导入的文件大小为1.5GB。导入的文件具有表格(例如,对于更小的4x4 mp.matrix):

from __future__ import division
import mpmath as mp

def myfuncSS(A,B,C,D):
    SS = mp.matrix([1/B**3/(A+B)**6*A**3+6/B**2/(A+B)**6*A**2+15/B/(A+B)**6*A+84/(A+B)**6+15*B/(A+B)**6/A+6*B**2/(A+B)**6/A**2+B**3/(A+B)**6/A**3,0,0,0],[-1/2/B**3/(A+B)**6*A**3-7/2/B**2/(A+B)**6*A**2-19/2/B/(A+B)**6*A-53/(A+B)**6-19/2*B/(A+B)**6/A-7/2*B**2/(A+B)**6/A**2-1/2*B**3/(A+B)**6/A**3,2/B**3/(A+B)**6*A**3+14/B**2/(A+B)**6*A**2+38/B/(A+B)**6*A+212/(A+B)**6+38*B/(A+B)**6/A+14*B**2/(A+B)**6/A**2+2*B**3/(A+B)**6/A**3,0,0],[-2/B**3/(A+B)**7*A**4-25/2/B**2/(A+B)**7*A**3-65/2/B/(A+B)**7*A**2+37/2/(A+B)**7*A-253*B/(A+B)**7-35/2*B**2/(A+B)**7/A-9/2*B**3/(A+B)**7/A**2-1/2*B**4/(A+B)**7/A**3,1/B**3/(A+B)**7*A**4+13/2/B**2/(A+B)**7*A**3+33/2/B/(A+B)**7*A**2-19/(A+B)**7*A+118*B/(A+B)**7+9/2*B**2/(A+B)**7/A+1/2*B**3/(A+B)**7/A**2,7/B**3/(A+B)**8*A**5+50/B**2/(A+B)**8*A**4+154/B/(A+B)**8*A**3+331/(A+B)**8*A**2-147*B/(A+B)**8*A+848*B**2/(A+B)**8+80*B**3/(A+B)**8/A+19*B**4/(A+B)**8/A**2+2*B**5/(A+B)**8/A**3,0],[-1/2/B**3/(A+B)**7*A**4-9/2/B**2/(A+B)**7*A**3-35/2/B/(A+B)**7*A**2-253/(A+B)**7*A+37/2*B/(A+B)**7-65/2*B**2/(A+B)**7/A-25/2*B**3/(A+B)**7/A**2-2*B**4/(A+B)**7/A**3,1/2/B**2/(A+B)**7*A**3+9/2/B/(A+B)**7*A**2+118/(A+B)**7*A-19*B/(A+B)**7+33/2*B**2/(A+B)**7/A+13/2*B**3/(A+B)**7/A**2+B**4/(A+B)**7/A**3,1/B**3/(A+B)**8*A**5+17/2/B**2/(A+B)**8*A**4+31/B/(A+B)**8*A**3-305/2/(A+B)**8*A**2+1568*B/(A+B)**8*A-305/2*B**2/(A+B)**8+31*B**3/(A+B)**8/A+17/2*B**4/(A+B)**8/A**2+B**5/(A+B)**8/A**3,2/B**3/(A+B)**8*A**5+19/B**2/(A+B)**8*A**4+80/B/(A+B)**8*A**3+848/(A+B)**8*A**2-147*B/(A+B)**8*A+331*B**2/(A+B)**8+154*B**3/(A+B)**8/A+50*B**4/(A+B)**8/A**2+7*B**5/(A+B)**8/A**3]])
    return SS

在主脚本中,通过以下方式调用此函数:

from 'filename' import myfuncSS

1.5GB是文件的合理大小;但是,与文件大小相比,导入它所需的内存是奇怪的。在我收到显示SIGKILL错误的killed 9外部错误之前,它会尝试耗尽所有32GB内存以及我的系统所具有的所有虚拟内存(这是正确的)。为什么Python使用如此大量的RAM将此文件导入内存?阅读这样一个函数会有什么更好的选择?

0 个答案:

没有答案