joblib系列:自界说缓存机制参数化

鼠扑  金牌会员 | 2024-8-15 02:33:59 | 显示全部楼层 | 阅读模式
打印 上一主题 下一主题

主题 577|帖子 577|积分 1731

joblib系列:自界说缓存机制参数化

  1. from functools import wraps
  2. from joblib import Memory
  3. # USE_CACHE_FLAG = False  # 定义是否使用缓存的标志
  4. # 使用缓存机制
  5. USE_CACHE_FLAG = True  # 定义是否使用缓存的标志
  6. CACHE_DIR_PATH = "./joblib_cache"
  7. VERBOSE_FLAG = 0
  8. def cache_if_needed(
  9.     use_cache=True,
  10.     cache_dir_path='./joblib_cache',
  11.     verbose_flag=0
  12. ):
  13.     def decorator(func):
  14.         @wraps(func)
  15.         def wrapper(*args, **kwargs):
  16.             if use_cache:
  17.                 joblib_memory = Memory(
  18.                     location=cache_dir_path, verbose=verbose_flag
  19.                 )
  20.                 return joblib_memory.cache(func)(*args, **kwargs)
  21.             else:
  22.                 return func(*args, **kwargs)
  23.         return wrapper
  24.     return decorator
  25. @cache_if_needed(
  26.     use_cache=USE_CACHE_FLAG,
  27.     cache_dir_path=CACHE_DIR_PATH,
  28.     verbose_flag=VERBOSE_FLAG
  29. )
  30. def expensive_computation(a, b):
  31.     print("Computing expensive_computation...")
  32.     return a * b + a / b
  33. if __name__ == '__main__':
  34.    
  35.     output_with_cache = expensive_computation(1, 2)
  36.     print(f"==>> output_with_cache: {output_with_cache}")
  37.     # # 不使用缓存机制, 设置USE_CACHE_FLAG=False
  38.     # output_without_cache = expensive_computation(3, 4)
  39.     # print(f"==>> output_without_cache: {output_without_cache}")
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

鼠扑

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表