Comment puis-je lire binaires pickle des données d'abord, puis unpickle il?

Je suis unpickling un NetworkX objet que de 1 go en taille sur le disque. Bien que je l'ai enregistré dans le format binaire (à l'aide du protocole no 2), c'est prendre un temps très long pour unpickle ce fichier---au moins une demi-heure. Le système que je suis en cours d'exécution sur a beaucoup de système de mémoire (128 GO), ce qui n'est pas le goulot d'étranglement.

J'ai lu ici que le décapage peut être accéléré par en première lecture l'ensemble du fichier dans la mémoire, puis unpickling il (ce thread particulier fait référence à python 3.0, dont je ne suis pas à l'aide, mais le point doit encore être vrai dans la version 2.6 de python).

Comment dois-je d'abord lire le fichier binaire, puis unpickle il? J'ai essayé:

import cPickle as pickle
f = open("big_networkx_graph.pickle","rb")
bin_data = f.read()
graph_data = pickle.load(bin_data)

Mais cela renvoie:

TypeError: argument must have 'read' and 'readline' attributes

Des idées?

InformationsquelleAutor conradlee | 2010-05-04