2

我有一个库,它将一些 REST api 映射到一些对象模型。因此使用 API 很容易。问题是每次我获得对象的某些属性时,库都会向服务器发出实际请求。从性能的角度来看,这并不好。

我想要的是添加一段时间(比如说 5 分钟)记忆属性值的功能,并且只有在数据过期时才发出实际请求。

问题是可以在不实际更改库代码的情况下做到这一点吗?例如使用装饰器或类似的东西。

4

1 回答 1

1

您想使用称为“记忆”的技术;我 10 多岁的 Google 搜索给了我另一个 SO 链接, 什么是 memoization 以及如何在 Python 中使用它?

factorial_memo = {}
def factorial(k):
    if k < 2: return 1
    if not k in factorial_memo:
        factorial_memo[k] = k * factorial(k-1)
    return factorial_memo[k]

但是,您不检查该行中的成员资格

if not k in factorial_memo:

你需要一个超时处理程序 -

if (curr - prev) < fiveMin
    # access Memo
else
    # start thread to get new data

高温高压

于 2012-12-15T14:22:45.420 回答