Решения для ошибок памяти в Python - PullRequest
1 голос
/ 27 марта 2012

Я загружаю много объектов с диктовками, содержащими большие строковые значения.В целом, программа превышает 2 ГБ и вылетает.Это не намного превышает, но я мог бы иметь еще большие данные позже.

Кажется, Python 32bit не может получить доступ к большему количеству памяти.Я предполагаю, что в будущем мне понадобится какая-нибудь система объектных баз данных, которая сможет обрабатывать большие данные и при этом не слишком медленна (то есть хранить в БД или на жестком диске, но сохранять скорость в памяти).Для производительности я не хочу хранить данные только в MySQL, а имею какой-то прозрачный механизм, который хранит как можно больше в памяти.

Ответы [ 2 ]

4 голосов
/ 27 марта 2012

В зависимости от того, насколько сложна ваша структура данных, взгляните на эти:

Memcached

Хранилище ключей-значений, чертовски быстро («O (1) все»), масштабируется до множества машин, предназначенных для кэширования (не является постоянным). Существуют решения для сохранения и загрузки данных, и даже memcachedb .

MongoDB

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

Redis

Хранение значений ключей, значения могут быть структурированы. Имеет много продвинутых операций, атомарные операции, публикация / подчинение, репликация мастер-подчиненный. Работает полностью в оперативной памяти, но имеет ограниченные механизмы сохранения.

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

1 голос
/ 27 марта 2012

Вы не упоминаете, под какой ОС вы работаете.AFAICT под Linux этой проблемы не существует, поэтому я предполагаю, что вы имеете в виду Windows.

Когда-то я имел эту проблему и решил ее следующим способом:

Я просто добавил немного оперативной памяти вмой ПК @ work и теперь хотел, чтобы Python мог использовать его.

Мой boot.ini уже давно содержит переключатель / 3GB, но, тем не менее, я мог выделить только 2 ГБ в Python.

Таким образом, я изменил python.exe с помощью imagecfg.exe, который я получил из http://blog.schose.net/index.php/archives/207, и теперь он работает.

Это просто FYI, на случай, если один из вас будетхотелось бы иметь возможность сделать это также.

Но имейте в виду, что не исключено, что есть побочные эффекты.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...