我有一个名为runquery
的函数,它调用数据库,然后一个接一个地生成行。我写了一个memoize装饰器(或者更准确地说,我只是从this stackoverflow question那里偷来了一个),但在随后的调用中,它只会产生一个空序列,可能是因为生成器的值只能生成一次。
如何修改适用于Python生成器的memoization装饰器?我意识到在某些时候我需要将它存储在内存中,但我希望在装饰器中处理这个问题,而不是修改原始函数。
memoization函数的当前代码为:
def memoized(f):
# Warning: Doesn't work if f yields values
cache={}
def ret(*args):
if args in cache:
return cache[args]
else:
answer=f(*args)
cache[args]=answer
return answer
return ret
https://stackoverflow.com/questions/4566769
复制相似问题