Я извлекаю объект NetworkX размером около 1 ГБ на диске. Несмотря на то, что я сохранил его в двоичном формате (используя протокол 2), процесс извлечения этого файла занимает очень много времени - по крайней мере, полчаса. Система, на которой я работаю, имеет достаточно системной памяти (128 ГБ), так что это не является узким местом.
Я прочитал здесь , что процесс ускорения можно ускорить, сначала прочитав весь файл в память, а затем распаковав его (этот конкретный поток ссылается на python 3.0, который я не использую, но точка все еще должна быть верной в Python 2.6).
Как мне сначала прочитать двоичный файл, а затем распаковать его? Я пробовал:
import cPickle as pickle
f = open("big_networkx_graph.pickle","rb")
bin_data = f.read()
graph_data = pickle.load(bin_data)
Но это возвращает:
TypeError: argument must have 'read' and 'readline' attributes
Есть идеи?