<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      Python cache 內存泄漏問題

      @functools.cache 函數裝飾器在一些特殊情況的時候會影響變量引用計數器的計數,從而導致內存泄漏。比如:@functools.cache和@@functools.property一起使用的時候,或者更復雜的嵌套引用

       1 from functools import wraps
       2 
       3 
       4 class CacheManager:
       5     def __init__(self):
       6         self._cache = {}
       7 
       8     def get_cache_obj(self, key):
       9         """獲取緩存對象"""
      10         return self._cache.get(key)
      11 
      12     def add_cache_obj(self, key, obj):
      13         """添加緩存對象"""
      14         self._cache[key] = obj
      15         return obj
      16 
      17     def __del__(self):
      18         """清除所有緩存對象"""
      19         # print(f"CacheManager del")
      20         for k, v in self._cache.items():
      21             # print(f"CacheManager del:{k=}")
      22             del v
      23         self._cache.clear()
      24         del self._cache
      25 
      26     @classmethod
      27     def cache_result(cls, func):
      28         """
      29         裝飾器:緩存結果,支持參數作為緩存的唯一鍵。
      30         """
      31 
      32         @wraps(func)
      33         def wrapper(instance, *args, **kwargs):
      34             # 根據函數名和參數構建唯一緩存鍵
      35             key = f"{func.__name__}:{args}:{kwargs}"
      36 
      37             # 檢查是否已緩存
      38             cache_obj = instance.cache_manager.get_cache_obj(key)
      39             if cache_obj is not None:
      40                 return cache_obj
      41 
      42             # 緩存中沒有對象,執行函數并緩存結果
      43             result = func(instance, *args, **kwargs)
      44             instance.cache_manager.add_cache_obj(key, result)
      45             return result
      46 
      47         return wrapper

      測試demo

       1 from base.utils.tools import CacheManager
       2 
       3 
       4 class MyClass:
       5     def __init__(self):
       6         self.cache_manager = CacheManager()
       7 
       8     def __del__(self):
       9         print("MyClass.__del__")
      10 
      11     @property
      12     @CacheManager.cache_result
      13     def oms_user(self):
      14         # 該代碼只在緩存不存在時執行
      15         return [1, 2, 3]
      16 
      17 
      18 def test_cache():
      19     m = MyClass()
      20     print(id(m.oms_user))
      21     print(id(m.oms_user))

       

      posted @ 2024-11-15 16:36  看一百次夜空里的深藍  閱讀(52)  評論(2)    收藏  舉報
      主站蜘蛛池模板: 亚洲天堂伊人久久a成人| 日韩人妻少妇一区二区三区| 国产激情艳情在线看视频| 国产精品成人av电影不卡| 大地资源免费视频观看| 亚洲国产精品综合久久网络| 亚洲精品中文字幕尤物综合| 国内精品久久久久电影院| 在线观看AV永久免费| 亚洲国产中文字幕精品| 国产99视频精品免费视频76| 国产乱久久亚洲国产精品| 丰满老熟妇好大bbbbb| 欧美交a欧美精品喷水| av永久免费网站在线观看| 国产叼嘿视频一区二区三区| 偷拍精品一区二区三区| 欧美丰满熟妇性xxxx| 国产成人一区二区三区在线| 国产AV无码专区亚洲AV潘金链 | 亚洲高清aⅴ日本欧美视频| 内射老阿姨1区2区3区4区| 国产高潮刺激叫喊视频| 国产亚洲精品中文字幕| 婷婷五月综合丁香在线| 337p西西人体大胆瓣开下部| 综合区一区二区三区狠狠| 在线观看特色大片免费视频| 国产一区一一区高清不卡| 国产熟睡乱子伦视频在线播放| 免费无码黄十八禁网站| 免费人妻无码不卡中文字幕18禁| 欧美亚洲另类制服卡通动漫| 极品无码国模国产在线观看| 欧美黑吊大战白妞| 人妻系列中文字幕精品| 天峻县| 国产成人精品午夜二三区| 亚洲欧洲精品日韩av| 亚洲国产精品一区二区第一页| 国产午夜一区二区在线观看|