def kegg_find(*args): if not hasattr(kegg_find,"cache"): if os.path.isfile("kegg_find.cache"): kegg_find.cache = pickle.load(open("kegg_find.cache","rb")) else: kegg_find.cache = {} if args not in kegg_find.cache or kegg_find.cache[args] is None: k = KEGG() result = k.find(*args) kegg_find.cache[args] = result with open("kegg_find.cache~","wb") as f: pickle.dump(kegg_find.cache, f) os.rename("kegg_find.cache~", "kegg_find.cache") return result else: return kegg_find.cache[args]