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

資訊專欄INFORMATION COLUMN

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

馬永翠 / 2998人閱讀

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

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

基本信息

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

使用場景

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

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

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

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

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

如何使用

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

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

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

安裝方法

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

然后import wrapcache

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

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

timeout, 過期時間,默認為-1,不緩存數據

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

注意:如果選擇adapter = RedisAdapter,則需要在使用前設置redis市里 調用 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

目前是使用內存 dict 和 redis 存儲緩存,后續要支持將 memcached 等服務器中,只需要補充 adapter 中代碼,實現對應方法即可

歡迎 push requst 和 issue 。

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/61760.html

相關文章

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

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

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

    摘要:裝飾器的使用符合了面向對象編程的開放封閉原則。三簡單的裝飾器基于上面的函數執行時間的需求,我們就手寫一個簡單的裝飾器進行實現。函數體就是要實現裝飾器的內容。類裝飾器的實現是調用了類里面的函數。類裝飾器的寫法比我們裝飾器函數的寫法更加簡單。 目錄 前言 一、什么是裝飾器 二、為什么要用裝飾器 ...

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

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

    goji 評論0 收藏0
  • python 多個裝飾器的調用順序

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

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

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

    leon 評論0 收藏0

發表評論

0條評論

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