У меня есть программа, которая много раз вызывается из командной строки, но включает в себя чтение большого файла pickle, поэтому каждый вызов может быть потенциально дорогостоящим. Есть ли способ, которым я могу заставить cPickle просто вставить файл в память, а не читать его целиком?Может ли cPickle или pickle загружать всю структуру в память?
3
A
ответ
5
Возможно, вам даже не нужно делать это явно, так как кэш-память вашей ОС, скорее всего, проделает чертовски хорошую работу.
Любая плохая производительность может быть связана со стоимостью десериализации, а не с затратами на ее чтение с диска. Вы можете протестировать это, создав временный диск и поместив там файл.
А способ удаления стоимости десериализации состоит в том, чтобы переместить загрузку файла в отдельный процесс python и назвать его как услугу. Создание быстрой и грязной службы REST в python является сверхлегким и супер-полезным в этих случаях.
Посмотрите на the socket docs, как это сделать с сырым сокетом. Хорошим примером для начала является эхо-сервер.