Я обрабатываю некоторые данные, и я сохранил результаты в трех словарях, и я сохранил их на диск с помощью Pickle. Каждый словарь имеет 500-1000 МБ.MemoryError с Pickle in Python
Теперь я загрузив их с:
import pickle
with open('dict1.txt', "rb") as myFile:
dict1 = pickle.load(myFile)
Однако уже при загрузке первого словаря я получаю:
*** set a breakpoint in malloc_error_break to debug
python(3716,0xa08ed1d4) malloc: *** mach_vm_map(size=1048576) failed (error code=3)
*** error: can't allocate region securely
*** set a breakpoint in malloc_error_break to debug
Traceback (most recent call last):
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/pickle.py", line 858, in load
dispatch[key](self)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/pickle.py", line 1019, in load_empty_dictionary
self.stack.append({})
MemoryError
Как решить эту проблему? Мой компьютер имеет 16 ГБ оперативной памяти, поэтому я нахожу необычным, что загружается 800-мегабайтный словарь. То, что я также обнаруживаю необычным, заключается в том, что при сохранении словарей проблем не было.
Далее, в будущем я планирую обработать больше данных, приводящих к увеличению словарей (3-4 ГБ на диске), поэтому любые советы по повышению эффективности оцениваются.
Какая ОС вы используете? Размер файла * на диске * или размер фактического использования памяти? –
В зависимости от вашей ОС, сколько памяти может быть выделено для процесса. –
Размер - это размер файла на диске. Я использую Mac OS 10.10. Есть ли способ настроить, сколько памяти может быть выделено? – flotr