1
與redis
和memcache
類似,默認情況下,Python是否有附加到其運行時環境的緩存?Python是否有默認的緩存服務
這必須是本地緩存。 我需要知道,無需安裝或調用任何其他庫,我可以使用我的系統中現有的Python安裝來緩存一些數據。 我需要將數據添加到dict
,但在此之前,如果有任何默認緩存,我需要添加到此。
任何幫助表示讚賞!
與redis
和memcache
類似,默認情況下,Python是否有附加到其運行時環境的緩存?Python是否有默認的緩存服務
這必須是本地緩存。 我需要知道,無需安裝或調用任何其他庫,我可以使用我的系統中現有的Python安裝來緩存一些數據。 我需要將數據添加到dict
,但在此之前,如果有任何默認緩存,我需要添加到此。
任何幫助表示讚賞!
取決於你需要做什麼。如果給一個函數一個默認參數,該參數等同於一個列表或字典,並且永遠不會給它一個默認的參數,那麼函數參數可以充當緩存。這是因爲Python在編譯時評估其函數定義,所以函數參數將在編譯時加載。就拿這個代碼:
def foo(value, arr=[]):
arr.append(value)
return arr
當像這樣跑:
for i in range(10):
foo(i)
結果是:
[0]
[0, 1]
[0, 1, 2]
[0, 1, 2, 3]
[0, 1, 2, 3, 4]
[0, 1, 2, 3, 4, 5]
[0, 1, 2, 3, 4, 5, 6]
[0, 1, 2, 3, 4, 5, 6, 7]
[0, 1, 2, 3, 4, 5, 6, 7, 8]
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
緩存僅僅是存儲在內存中的東西。將數據存儲在python'dict'中可能被認爲是緩存,所以您需要更具體。 –
Python字典應該爲你工作。但我想你正在尋找像Python一樣的番石榴緩存https://code.google.com/p/guava-libraries/wiki/CachesExplained或即將到期的地圖http://www.java2s.com/Code/Java/ Collections-Data-Structure/ExpiringMap.htm。類似的東西可以很容易地在Python中實現(由Python dict支持)。 –
Python 3具有['lru_cache'](https://docs.python.org/3.4/library/functools.html#functools.lru_cache),它包裝函數,將參數構建爲結果字典,以及在調用函數時參數,它將使用dict而不是調用函數本身。 – myaut