full_file_name = 'dumps/%s/%s' % (dir_name,filename)
if os.path.isfile(full_file_name):
return eval(file(full_file_name,'r').read())
else:
return None
def set_dump_data(dir_name, url, data):
if not os.path.isdir('dumps/'+dir_name):
os.makedirs('dumps/'+dir_name)
m = hashlib.md5(url)
filename = m.hexdigest()
full_file_name = 'dumps/%s/%s' % (dir_name,filename)
f = file(full_file_name, 'w+')
f.write(repr(data))
f.close()
def deco_dump_data(func):
def func_wrapper(url):
data = get_dump_data(func.__name__,url)
if data is not None:
return data
data = func(url)
if data is not None:
set_dump_data(func.__name__,url,data)
return data
return func_wrapper
然后,我们只需要在每个func_top,func_sub,func_bottom都加上deco_dump_data这个装饰器即可~~
搞定!这样做最大的好处在于,因为top,sub,bottom,每一层都会dump数据,所以比如某个sub层数据dump之后,是根本不会走到他所对应的bottom层的,减少了大量的开销!
OK,就这样~ 人生苦短,我用python!










