Предполагая, что вы имеете в виду 600 на узел, вы можете попробовать что-то вроде этого:
import os.path
import cPickle
class LazyGraph:
def __init__(self,folder):
self.folder = folder
def get_node(self,id):
f = open(os.path.join(self.folder,str(id)),'rb')
node = cPickle.load(f)
f.close() # just being paranoid
return node
def set_node(self,id,node):
f = open(os.path.join(self.folder,str(id)),'wb')
cPickle.dump(node,f,-1) # use highest protocol
f.close() # just being paranoid
Используйте массивы (или пустые массивы) для хранения фактических идентификаторов узлов, так как они быстрее.
Обратите внимание, это будет очень очень медленно.
Вы можете использовать многопоточность для предварительной выборки узлов (при условии, что вы знали, в каком порядке вы их обрабатываете), но это будет неинтересно.