我正在解除磁盘上大小约为1GB的NetworkX对象的锁定。尽管我以二进制格式保存了它(使用协议2),但要解开这个文件需要很长时间——至少半个小时。我运行的系统有足够的系统内存(128 GB),所以这不是瓶颈。
我已经读过here那篇文章,通过先将整个文件读入内存,然后取消对它的pickling(那个特定的线程指的是python 3.0,我没有使用它,但这一点在python 2.6中应该仍然是正确的),可以加快pickling的速度。
如何先读取二进制文件,然后解除对其的锁定?我试过:
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
有什么想法吗?
pickle.load(file)
需要一个类似文件的对象。相反,请使用:^{}
文档中提到了StringIO,我认为这是一个可能的解决方案。
尝试:
相关问题 更多 >
编程相关推荐