2016-12-15 4 views
0

Прежде всего, спасибо вам заранее!Python Pickle Memory Issue

Так что я пытаюсь Pickle.dump большой словарь объект, содержащий информацию о патентных цитирования.

Я получаю не очень многословную ошибку 'MemoryError'.

Я предполагаю, что это связано с тем, что файл слишком большой, чтобы Pickle сбрасывался в память. Кто-нибудь получил какие-либо предложения о том, как я мог обойти эту проблему/хорошие альтернативы для большого размера памяти для хранения файлов.

Чтобы сбросить Я просто с помощью кода:

def pickleDumpCd(): 
with open("./PickleDumpCd","wb")as cdFP: 
    pickle.dump(createSameTSVDateDict("uspatentcitation.tsv"),cdFP) 

выбрасывали это словарь, созданный из TSV (код ниже):

def createSameTSVDateDict(path): 
citationDateDict = defaultdict() 
with open(path) as citTSV: 
    print("Creating Same TSV Date Dict") 
    header = 0 
    for line in csv.reader(citTSV, dialect="excel-tab"): 
     if header > 0 and line[1] not in citationDateDict: 
      citationDateDict[line[1]] = [(line[3],line[2])] 
     elif header > 0 and line[2] in citationDateDict: 
      citationDateDict[line[1]].append((line[3],line[2])) 
     header += 1 
return citationDateDict 

Этот вопрос был преследующих меня за в то время как, так что любые мысли/предложения очень ценятся.

Спасибо, Луи

+0

Как правило, MemoryError не возникает для «слишком большого файла», но поскольку Python не может выделить достаточное количество памяти (ОЗУ). Вы используете Python 32bit или 64bit? Если 32, попробуйте переключиться на 64-битную версию. –

+0

@ MaximilianMatthé Python 3.5.2 | Anaconda 4.2.0 (64-bit) win32 - Я сомневаюсь, что это проблема, но спасибо за быстрый ответ! – lel23

ответ

0

У меня была аналогичная проблема, которую я решена путем установки 64-битной версии питона. Если данные, которые вы пытаетесь определить, не слишком велики, это может решить вашу проблему.

+0

В настоящее время я использую 64-разрядный Python, но спасибо за ответ – lel23