0
我想寫一個持久化備忘錄(記憶到磁盤)的裝飾器。因爲我想爲許多函數使用這個裝飾器,所以我必須決定爲這些函數保存記憶數據的位置。我用Google搜索了一圈,發現兩種解決方案:python持久化備忘錄的目標
- 讓功能決定在哪裏通過函數名存儲memoizing數據
- 自動確定在何處存儲數據
然而,這兩種解決方案,每個功能都必須在名稱(或目的地)碰撞的情況下「互相」知道,這是一種不好的設計。
因此,我的問題是,如何避免這種碰撞?
必須解決類似問題的[pickle module](https://docs.python.org/3/library/pickle.html)使用酸洗功能的「完全限定名稱」。 –
有趣的問題,但我沒有答案。不過,我有幾條評論。 :) 1.您裝飾的功能不應該知道它們是裝飾的,所以它們不應包含與memoization目的地相關的代碼或數據。 OTOH,你的裝飾器可以根據'__file__'和函數的'.__ name__'選擇一個默認目的地,但也可以接受一個參數來選擇不同的目標路徑,或者修改默認目標路徑。 2.注意確保您的程序可以處理多次同時運行。 –