是這樣的,今天把我的活幹完,看到一段**
然後,我發現了這樣一段**
@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原始碼裡面看一下
1class
cache(object):
2......
3def memoize(self, timeout=none, make_name=none, unless=none):
4def
memoize(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是怎麼工作的?
1def 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元,你可...