PyCharm - 内存错误

时间:2016-05-17 07:16:49

标签: python python-2.7 pycharm

以下代码从~500Mb文件中获取数据,该文件具有由,和换行符分隔的5000x5000浮点数。

class Pixel :
    def __init__(self, value, y_val):
        self.val = value
        self.sum = 0
        self.y = y_val
    def __repr__(self):
        return "(%.2f, %.2f)" % (self.val, self.sum)

def Build_Pixel_Array_From_File(filename) :
    with open(filename) as pixels:
        pixelArray = [line.split(", ") for line in pixels]
    for i in range(len(pixelArray)):
        for j in range(len(pixelArray)):
            pixelArray[i][j] = Pixel(float(pixelArray[i][j]), j)
    return pixelArray    

# Main
filename = "input.txt"
pixels = Build_Pixel_Array_From_File(filename)

我最初认为我低估了我需要的内存量所以我编辑了我的pycharm64.exe.vmoptions:

-Xms1024m
-Xmx2048m
-XX:MaxPermSize=1024m
-XX:ReservedCodeCacheSize=240m
-XX:+UseConcMarkSweepGC
-XX:SoftRefLRUPolicyMSPerMB=50
-ea
-Dsun.io.useCanonCaches=false
-Djava.net.preferIPv4Stack=true
-XX:+HeapDumpOnOutOfMemoryError
-XX:-OmitStackTraceInFastThrow

然而,在运行时间约为15秒后,程序仍然只挂起Memory Error。我正在运行64位系统,设置似乎正在生效。内存栏中内置的PyCharms显示了更改,但程序在构建阵列时仍然挂起。

编辑: 有人建议在填充数组时动态地将字符串转换为浮点数。这样做导致在第1000万元素(40%)

之前挂断
def Build_Pixel_Array_From_File(filename) :
    pixelArray = []
    parser = csv.reader(open(filename))
    for row in parser:
        pixelSubArray = []
        cell_num = 0
        for cell in row:
            pixelSubArray.append(Pixel(float(cell), cell_num))
            cell_num = cell_num + 1
        pixelArray.append(pixelSubArray)
    return pixelArray

0 个答案:

没有答案