切换到python 64位后出现内存错误

时间:2019-01-12 03:20:17

标签: python nltk

我正在使用64位Python使用MemoryError。这是我的功能:

def entr_langue(path,nom_langue):
    mots_ts=[]
    table_tr=dict((ord(char),None) for char in string.punctuation)#table de translation/mapping
    with codecs.open(path,"r","utf-8") as filep:

        for i,line in enumerate(filep):
            #extraction par ligne
            line=" ".join(line.split()[1:])
            line=line.lower()
            line=re.sub(r"\d+"," ",line) #suppression des digits

            if len(line) !=0:
                line=line.translate(table_tr)#suppression des poncts
                mots_ts += line
                mots_ts.append(" ")#ajout des espaces

    ts_str=''.join(mots_ts)
    ts_str=re.sub(' +',' ',ts_str) #remp des series d'espaces par un seul espace
    seq_ts=[i for i in ts_str]


    #daba extraction des Bigram et les trier selon la frequ
    fn=BigramCollocationFinder.from_words(seq_ts)
    fn.apply_freq_filter(6) #"li 3ndhom frequ 9el m 6 ytfiltraw
    bigram_model=fn.ngram_fd.viewitems()
    bigram_model=sorted(fn.ngram_fd.viewitems(), key=lambda item: item[1],reverse=True)

    print (bigram_model)
    np.save(nom_langue+".npy",bigram_model)

错误:

File "C:/Users/msi/Documents/projIA/extraction_bigram.py", line 23, in entr_langue
    mots_ts += line
  MemoryError

1 个答案:

答案 0 :(得分:0)

如果您在python 32bit上没有该错误,那应该是错误的移植代码。 因为在python 64位上您可以在列表中包含更多元素,所以标准PC实际上无法实现完全填充这些庞大数据。但是,即使您甚至在32位操作系统上运行该列表,列表所包含的空间也无法超过4 GB的容量(或其他类似的设备,我不确定。)

有一个关于内存限制的类似主题: Memory errors and list limits?