我正在取消在磁盘上大小约为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