。。。 不知道是事故還是故事的東西

2021-09-25 14:17:00 字數 2630 閱讀 9510

是這樣的,今天把我的活幹完,看到一段**

然後,我發現了這樣一段**

@cache.cached(timeout=60, key_prefix='

binary')

defrandom_binary():

return random.sample(range(10 ** 5, 10 ** 6), 1)[0]

當時第一感覺是,為了這個東西要計算兩次乘方?這個開銷不必要的吧

但是還是覺得不對勁。。。仔細看了看

range(10 ** 5, 10 ** 6)

??????為了這個隨機數,要生成長度九萬的陣列?幾百k的記憶體???

但是,還有什麼呢。。。

繼續。。

生成的是隨機數,然後用flask-cache快取了??

但是用來快取函式的不應該是flask-memoize嗎?

但是隨機數結果用來快取了,還是隨機數嗎??

去flask-cache原始碼裡面看一下

1

class

cache(object):

2......

3def memoize(self, timeout=none, make_name=none, unless=none):

4def

memoize(f):

[email protected](f)

6def decorated_function(*args, **kwargs):7#

: bypass cache

8if callable(unless) and unless() is

true:

9return f(*args, **kwargs)

1011

try:

12 cache_key = decorated_function.make_cache_key(f, *args, **kwargs)

13 rv =self.cache.get(cache_key)

14except

exception:

15if

16raise

17 logger.exception("

exception possibly due to cache backend.")

18return f(*args, **kwargs)

1920

if rv is

none:

21 rv = f(*args, **kwargs)

22try:23

self.cache.set(cache_key, rv,

24 timeout=decorated_function.cache_timeout)

25except

exception:

26if

27raise

28 logger.exception("

exception possibly due to cache backend.")

29return

rv30

31 decorated_function.uncached =f

32 decorated_function.cache_timeout =timeout

33 decorated_function.make_cache_key =self._memoize_make_cache_key(

34make_name, decorated_function)

35 decorated_function.delete_memoized = lambda

: self.delete_memoized(f)

3637

return

decorated_function

38return memoize

cache.memoize()是利用make_cache_key(f, *args, **kwargs)作為鍵存入redis的,那麼make_cache_key是怎麼工作的?

1

def make_cache_key(*args, **kwargs):2if

callable(key_prefix):

3 cache_key =key_prefix()

4elif'%s

'inkey_prefix:

5 cache_key = key_prefix %request.path

6else

:7 cache_key =key_prefix89

return

cache_key

結果就是,不管有多少請求,只要在60秒內,返回的結果都是一樣的,隨機的意義在哪呢。。。唯一的好處就是不會幾百k的記憶體消耗變成幾十m吧,畫面太美

你可能不知道的東西

元素可以分為塊級元素,行內元素以及行內塊級元素。行內元素的margin或者padding只有margin left和margin right以及padding left和padding right有效果,margin top margin bottom padding top padding bot...

不知道是第幾篇的總結

這個大周的時間特別的短。然而時間還是夠我們上好幾節的資訊課。就在二零一八年三月二十六日晚上五點多的時候,我們,進行了一次考試。這次的考題不是老師出的,我們打的是usaco上面的比賽。然後,除了班級裡那個資訊課代表大佬,上次過了二十五個點,進了組,剩下的都是銅組滴。於是我們的資訊科代表大大,孤軍奮戰,...

不知道是自己倒霉還是購書中心的系統差

2009 11 20 的手寫筆記 但今天去購書中心買書的時候,我說用卡上的消費金額消費,但收銀員卻說卡上沒有消費金額,我聽了嚇了一跳,就問他,那積分呢?有多少,他叫我到服務台查,我就到服務台的mm那裡去查,結果只剩130的積分,我說 那我昨晚反利的消費金額怎麼沒了?mm說 有啊,在卡上有40元,你可...