2012-04-08 1 views
2

Мне нужно сериализовать данные, требующие высокой производительности. Отдельный поток будет получать доступ к нему каждую секунду и должен загружать данные в память. В пользовательских сеансах будет около 1000 - 10000 словарных статей (id, sessid, login date). Некоторые данные будут часто обновляться, поскольку время входа в систему имеет некоторое время.Python - лучший способ сериализации данных с высокой производительностью?

Эти данные будут переданы между сервером python и приложением Django. Я думаю использовать рассол или его более быструю версию cPickle. Я также нашел marshal.

Каков наилучший способ сделать это? Является ли cPickle достаточно эффективным? Или, может быть, маршал?

EDIT: Очень важная вещь - время доступа. Это будет сервер веб-сервера в реальном времени, поэтому мне нужны очень низкие задержки. Быстрее ли доступ к данным cPickle раз в секунду или для подключения к базе данных, например, Redis?

ответ

4

Лучшим подходом может быть использование некоторых кеш-памяти в памяти - memcached, если ваши потребности просты - или что-то еще с набором функций, например redis.

+0

cPickle будет очень медленным по сравнению с redis, который предназначен прежде всего для скорости. –

3

Используйте настоящую базу данных в памяти. Не используйте рассол, cPickle или маршал или что-то в этом роде.

1

redis по-прежнему требует сериализации любого комплекса python object, поэтому redis не решает эту проблему, если вы не представляете все свои данные в виде простых ключей и простых значений. redis не является десериализационным решением, это просто хранилище данных для строк. и в любом случае redis является одним из более медленных вариантов: https://charlesleifer.com/blog/completely-un-scientific-benchmarks-of-some-embedded-databases-with-python/

 Смежные вопросы

  • Нет связанных вопросов^_^