0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

在Python中實現(xiàn)更簡單好用的函數(shù)運算緩存

電子工程師 ? 來源:Python大數(shù)據(jù)分析 ? 作者:Python大數(shù)據(jù)分析 ? 2022-08-05 11:05 ? 次閱讀

我們即將學習的是:在Python中實現(xiàn)更簡單好用的函數(shù)運算緩存。 函數(shù)運算緩存,顧名思義就是我們可以針對指定的函數(shù),讓其記住過往參數(shù)輸入和返回結果,使得后續(xù)接收到相同的參數(shù)時跳過函數(shù)運算,直接返回已緩存的結果值。 很多朋友應該知道Python標準庫里functools.lru_cache可以做函數(shù)運算緩存,但是它的功能實在是太簡陋了,像過期時間設置之類的功能都沒有。 而我們可以使用第三方庫cachier來代替,它的基本使用方式非常簡單,使用pip install cachier完成安裝后,我們來看一個簡單的示例: 這里我們定義一個具有一定運算耗時的函數(shù),利用cachier.cachier()裝飾,并利用參數(shù)stale_after設置緩存到期時間為10秒:

importtime
fromcachierimportcachier
fromdatetimeimporttimedelta

@cachier(stale_after=timedelta(seconds=10))
defdemo(x:int,y:int):

time.sleep(2)

returnx*y

foriinrange(10):
print('-'*50)
print(f'第{i+1}次執(zhí)行')
start=time.time()
demo(1,1)
print(f'耗時{round(time.time()-start,2)}秒')

time.sleep(2)
過程打印記錄如下: 16fc5746-146a-11ed-ba43-dac502259ad0.png 可以觀察到,我們的函數(shù)按照設定好的過期時間進行著緩存。除此之外,cachier還有很多其他實用特性,譬如基于mongodb實現(xiàn)分布式存儲等,你可以前往其官方倉庫查看詳細文檔說明:https://github.com/shaypal5/cachier 
審核編輯:彭靜
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 存儲
    +關注

    關注

    13

    文章

    4226

    瀏覽量

    85575
  • 函數(shù)
    +關注

    關注

    3

    文章

    4277

    瀏覽量

    62323
  • python
    +關注

    關注

    55

    文章

    4767

    瀏覽量

    84375

原文標題:Python 中更好用的函數(shù)運算緩存

文章出處:【微信號:AI科技大本營,微信公眾號:AI科技大本營】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    Python常用自增運算寫法

    運算符不起作用,相應的- -運算Python也是不起作用的,既然如此,那么如何實現(xiàn)
    發(fā)表于 04-09 17:45

    請問Python如何實現(xiàn)vlookup函數(shù)的功能?

    vlookup函數(shù)功能非常強大,那Python如何實現(xiàn)?
    發(fā)表于 11-06 06:11

    如何使用LUA腳本串口屏實現(xiàn)簡單的邏輯運算以及字符處理

    物聯(lián)型串口屏通過 LUA 腳本配合工程可以完成大部分的內部邏輯處理,可以做到讓 MCU 只參與數(shù)據(jù)處理,不參與屏的邏輯處理。本文將介紹如何使用 LUA 腳本串口屏實現(xiàn)簡單的邏輯
    發(fā)表于 10-17 08:00 ?17次下載
    如何使用LUA腳本<b class='flag-5'>在</b>串口屏<b class='flag-5'>中</b><b class='flag-5'>實現(xiàn)</b><b class='flag-5'>簡單</b>的邏輯<b class='flag-5'>運算</b>以及字符處理

    python函數(shù)概念理解

    函數(shù)是可以實現(xiàn)一些特定功能的小方法或是小程序。Python中有很多內建函數(shù),當然隨著學習的深入,我們可以學會創(chuàng)建對自己有用的
    的頭像 發(fā)表于 01-18 17:37 ?2283次閱讀

    python運算符是什么

    python運算符 0. 什么是運算符? 本章節(jié)主要說明Python運算符。舉個簡單的例子 4
    的頭像 發(fā)表于 02-21 16:44 ?2341次閱讀

    抽樣Python是如何實現(xiàn)

    今天來和大家聊聊抽樣的幾種常用方法,以及Python是如何實現(xiàn)的。
    的頭像 發(fā)表于 08-05 10:59 ?1153次閱讀

    推薦一個Python超級好用的內置函數(shù)lambda

    Python當中,我們經常使用lambda關鍵字來聲明一個匿名函數(shù),所謂地匿名函數(shù),通俗地來講就是沒有名字的函數(shù)。
    的頭像 發(fā)表于 09-13 18:09 ?978次閱讀
    推薦一個<b class='flag-5'>Python</b>超級<b class='flag-5'>好用</b>的內置<b class='flag-5'>函數(shù)</b>lambda

    Python入門之什么是函數(shù)

    Python函數(shù)比我們想象的更為靈活。由于Python函數(shù)是對象,所以函數(shù)對象可以賦值給其他的名字、傳遞給其他
    的頭像 發(fā)表于 02-21 14:24 ?477次閱讀

    Python支持遞歸函數(shù)

    Python支持遞歸函數(shù)——即直接或間接地調用自身以進行循環(huán)的函數(shù)。遞歸是頗為高級的話題,并且它在Python相對少見。然而,它是一項應該
    的頭像 發(fā)表于 02-21 14:28 ?612次閱讀

    python如何定義一個函數(shù)

    一、Python3 函數(shù) 函數(shù)是組織好的,可重復使用的,用來實現(xiàn)單一,或相關聯(lián)功能的代碼段。 函數(shù)能提高應用的模塊性,和代碼的重復利用率。你
    的頭像 發(fā)表于 11-14 11:26 ?671次閱讀

    python函數(shù)返回多個參數(shù)

    。 Python,可以使用關鍵字 return 來返回一個或多個值。函數(shù)定義的末尾,可以使用 return 語句來指定
    的頭像 發(fā)表于 11-21 16:37 ?1144次閱讀

    復數(shù)iPython如何定義

    復數(shù)的虛數(shù)單位'i'Python可以通過使用cmath模塊來定義和使用。cmath模塊提供了處理復數(shù)的函數(shù)和常量。
    的頭像 發(fā)表于 11-22 09:40 ?2737次閱讀

    python調用math函數(shù)的方法

    Python編程,數(shù)學函數(shù)是非常重要的工具,我們可以使用它們進行各種數(shù)值計算、幾何運算和統(tǒng)計分析等操作。
    的頭像 發(fā)表于 11-22 11:01 ?2669次閱讀

    python如何引入math庫

    Python,要使用math庫,首先需要先引入它。math庫是Python的一個標準庫,它提供了許多數(shù)學函數(shù)和常數(shù)。通過使用math庫,
    的頭像 發(fā)表于 11-22 11:03 ?3981次閱讀

    splitpython的用法

    splitpython的用法 split()是Python中一個非常常用的字符串函數(shù),它能夠根據(jù)指定的分隔符將一個字符串分割成多個子字符
    的頭像 發(fā)表于 12-25 15:12 ?1942次閱讀