2012-01-27 2 views
3

У меня есть программа, которая много раз вызывается из командной строки, но включает в себя чтение большого файла pickle, поэтому каждый вызов может быть потенциально дорогостоящим. Есть ли способ, которым я могу заставить cPickle просто вставить файл в память, а не читать его целиком?Может ли cPickle или pickle загружать всю структуру в память?

ответ

5

Возможно, вам даже не нужно делать это явно, так как кэш-память вашей ОС, скорее всего, проделает чертовски хорошую работу.

Любая плохая производительность может быть связана со стоимостью десериализации, а не с затратами на ее чтение с диска. Вы можете протестировать это, создав временный диск и поместив там файл.

А способ удаления стоимости десериализации состоит в том, чтобы переместить загрузку файла в отдельный процесс python и назвать его как услугу. Создание быстрой и грязной службы REST в python является сверхлегким и супер-полезным в этих случаях.

Посмотрите на the socket docs, как это сделать с сырым сокетом. Хорошим примером для начала является эхо-сервер.

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

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