我正在取消在磁盤上大小約爲1GB的NetworkX對象。雖然我以二進制格式保存它(使用協議2),但要解開這個文件需要很長時間---至少半小時。我正在運行的系統有很多系統內存(128 GB),所以這不是瓶頸。如何先讀取二進制pickle數據,然後取下它?
我讀過here酸洗可以通過首先讀取整個文件到內存中,然後取消它(特定的線程是指python 3.0,我不使用,但點仍應該在python 2.6中爲true)。
我該如何先讀取二進制文件,然後取下它?我曾嘗試:
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
任何想法?
這似乎是工作。我不認爲這是因爲「加載」意味着「加載字符串」,而我加載的數據是二進制的。但是因爲我用二進制讀取文件,所以我輸入的字符串也是二進制的,所以這一切都可以實現。謝謝。 – conradlee 2010-05-04 09:54:26
@conradlee:Python字符串支持二進制數據,所以不需要做出區分。 – unwind 2010-05-04 11:59:45