国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

一個輕量級 Python 裝飾器的緩存庫——wrapcache

gekylin / 1424人閱讀

摘要:自己因為經(jīng)常遇到這種場景,所以將其封裝成一個庫,方便使用。如何使用使用簡單,只需要要在方法上面加一個裝飾器即可緩存,并且設(shè)置緩存過期時間。以上即可,第一次運行需要秒,第二次運行過期時間秒之內(nèi)瞬間給出緩存結(jié)果。適合于小場景的方法緩存。

A python Function / Method OUTPUT cache system base on function Decorators.

基本信息

github 地址:https://github.com/hustcc/wrapcache

使用場景

經(jīng)常會在某些很小的場合需要緩存一些數(shù)據(jù),提高一些性能,而這種緩存又不是經(jīng)常需要,比如:

兩個進程共享數(shù)據(jù)庫,其中只讀進程讀取數(shù)據(jù)做一些操作,這個時候,可以將數(shù)據(jù)庫內(nèi)容緩存一下,避免重復(fù)讀數(shù)據(jù)庫;

一個web頁面數(shù)據(jù)太多,然而頁面并不需要完全的實時性,這個時候就可以將頁面內(nèi)容完全緩存,在過期時間之后,不讀數(shù)據(jù)庫,不進行大量計算,這種在一些報告頁面非常常見。

這兩個場景其實挺常見的,要完成也不難,無非就是存到python 字段,加一個時間戳,判斷過期,如果是redis,就直接存redis,并賦予timeout時間就ok了。

自己因為經(jīng)常遇到這種場景,所以將其封裝成一個python庫,方便使用。

如何使用

使用簡單,只需要要在方法上面加一個裝飾器即可緩存,并且設(shè)置緩存過期時間。

import wrapcache
@wrapcache.wrapcache(timeout = 60)
def need_cache_function(input, t = 2, o = 3):
    sleep(2)
    return random.randint(1, 100)

以上即可,第一次運行需要 2 秒,第二次運行(過期時間 60 秒之內(nèi))瞬間給出緩存結(jié)果。適合于小場景的方法緩存。

安裝方法

首先 pip install wrapcache,支持python2和python3。

然后import wrapcache

最后在需要緩存的方法上加上裝飾器即可@wrapcache.wrapcache(timeout = 3)

其中 @wrapcache.wrapcache(timeout = 3, adapter = RedisAdapter) 有兩個參數(shù):

timeout, 過期時間,默認(rèn)為-1,不緩存數(shù)據(jù)

adapter,存儲器,默認(rèn)為MemoryAdapter(存到python的全局字典中),可選RedisAdapter(存儲到redis中)

注意:如果選擇adapter = RedisAdapter,則需要在使用前設(shè)置redis市里 調(diào)用 RedisAdapter.db = redis_instance

REDIS_CACHE_POOL = redis.ConnectionPool(host = "xx.xxx.xx.xxx", port = 6379, password = "redis_pwd", db = 2)
REDIS_CACHE_INST = redis.Redis(connection_pool = REDIS_CACHE_POOL, charset = "utf8")
RedisAdapter.db = REDIS_CACHE_INST #初始化裝飾器緩存
TODO

目前是使用內(nèi)存 dict 和 redis 存儲緩存,后續(xù)要支持將 memcached 等服務(wù)器中,只需要補充 adapter 中代碼,實現(xiàn)對應(yīng)方法即可

歡迎 push requst 和 issue 。

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/37704.html

相關(guān)文章

  • 一個量級 Python 裝飾的緩存庫——wrapcache

    摘要:自己因為經(jīng)常遇到這種場景,所以將其封裝成一個庫,方便使用。如何使用使用簡單,只需要要在方法上面加一個裝飾器即可緩存,并且設(shè)置緩存過期時間。以上即可,第一次運行需要秒,第二次運行過期時間秒之內(nèi)瞬間給出緩存結(jié)果。適合于小場景的方法緩存。 A python Function / Method OUTPUT cache system base on function Decorators. 基...

    馬永翠 評論0 收藏0
  • Python】一文弄懂python裝飾器(附源碼例子)

    摘要:裝飾器的使用符合了面向?qū)ο缶幊痰拈_放封閉原則。三簡單的裝飾器基于上面的函數(shù)執(zhí)行時間的需求,我們就手寫一個簡單的裝飾器進行實現(xiàn)。函數(shù)體就是要實現(xiàn)裝飾器的內(nèi)容。類裝飾器的實現(xiàn)是調(diào)用了類里面的函數(shù)。類裝飾器的寫法比我們裝飾器函數(shù)的寫法更加簡單。 目錄 前言 一、什么是裝飾器 二、為什么要用裝飾器 ...

    liuchengxu 評論0 收藏0
  • python裝飾器的原理和使用

    摘要:我們以測量函數(shù)運行時間為例來講一講裝飾器的運行原理。三更加通用的裝飾器前面兩部分講了裝飾器的原理,這一部分就講講要寫出一個通用的裝飾器需要注意的問題。首先就是參數(shù)的問題,裝飾器返回的函數(shù)不是原來的函數(shù),函數(shù)的簽名也就和原來的函數(shù)簽名不一樣。 一、最簡單的裝飾器 裝飾器是python中很基礎(chǔ)也很實用的一個特性。通過裝飾器我們可以很方便地為一些函數(shù)添加相同的功能。我們以測量函數(shù)運行時間為例...

    goji 評論0 收藏0
  • python 多個裝飾器的調(diào)用順序

    摘要:如果不使用裝飾器的話,普通的做法可能是在中寫一堆校驗代碼來判斷用戶是否登錄,然后決定后面的執(zhí)行邏輯,這樣比較麻煩。 前言 裝飾器是程序開發(fā)中經(jīng)常會用到的一個功能,也是python語言開發(fā)的基礎(chǔ)知識,如果能夠在程序中合理的使用裝飾器,不僅可以提高開發(fā)效率,而且可以讓寫的代碼看上去顯的高大上^_^ 使用場景 可以用到裝飾器的地方有很多,簡單的舉例如以下場景 引入日志 函數(shù)執(zhí)行時間統(tǒng)計 執(zhí)...

    wapeyang 評論0 收藏0
  • 說說Python中的閉包 - Closure

    摘要:閉包可以用來在一個函數(shù)與一組私有變量之間創(chuàng)建關(guān)聯(lián)關(guān)系。夾帶私貨外部變量返回的是函數(shù),帶私貨的函數(shù)支持將函數(shù)當(dāng)成對象使用的編程語言,一般都支持閉包。所以說當(dāng)你的裝飾器需要自定義參數(shù)時,一般都會形成閉包。 Python中的閉包不是一個一說就能明白的概念,但是隨著你往學(xué)習(xí)的深入,無論如何你都需要去了解這么一個東西。 閉包的概念 我們嘗試從概念上去理解一下閉包。 在一些語言中,在函數(shù)中可以(嵌...

    leon 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<