3
我有一個程序想要從命令行多次調用,但涉及讀取一個大的pickle文件,因此每個調用都可能會很昂貴。有什麼方法可以讓cPickle將文件映射到內存中,而不是完整地讀取它?cPickle或pickle是否將整個結構加載到內存中?
我有一個程序想要從命令行多次調用,但涉及讀取一個大的pickle文件,因此每個調用都可能會很昂貴。有什麼方法可以讓cPickle將文件映射到內存中,而不是完整地讀取它?cPickle或pickle是否將整個結構加載到內存中?
你可能甚至不需要明確地做到這一點,因爲你的操作系統的磁盤緩存可能會做一個該死的好工作。
任何糟糕的性能實際上可能與反序列化的成本有關,而不是從磁盤讀取它的成本。您可以通過創建臨時RAM磁盤並將文件放在那裏來測試。
而刪除反序列化代價的方法是將文件加載到一個單獨的python進程並稱之爲服務。在Python中構建一個快速而又髒的REST服務在這些情況下是超級簡單和超級有用的。
看看the socket docs關於如何用原始套接字來做到這一點。回聲服務器就是一個很好的例子。