How to store the result of an executed function and re-use later?

后端 未结 3 1530
悲哀的现实
悲哀的现实 2021-01-19 03:16

E.g., I have:

def readDb():
    # Fetch a lot of data from db, spends a lot time
    ...
    return aList

def calculation():
    x = readdb()
    # Process          


        
3条回答
  •  耶瑟儿~
    2021-01-19 03:33

    Write a simple decorator:

    class memo(object):
        def __init__(self, fun):
            self.fun = fun
            self.res = None
        def __call__(self):
            if self.res is None:
                self.res = self.fun()
            return self.res
    
    @memo
    def readDb():
        # ... etc
        return aList
    

    For more general solutions, look here: http://code.activestate.com/recipes/498245-lru-and-lfu-cache-decorators/.

提交回复
热议问题