关于网站集约化建设的讲话,怎么建设自己网站外网无法访问,网站实名认证在哪,wordpress有没有付费在Python中#xff0c;lru_cache和cache都是functools模块提供的装饰器#xff0c;用于缓存函数的结果#xff0c;但它们的功能和使用场景略有不同。
functools.lru_cache
lru_cache表示“最近最少使用”缓存。它是一个装饰器#xff0c;用于缓存函数调用的结果。当缓存达…在Python中lru_cache和cache都是functools模块提供的装饰器用于缓存函数的结果但它们的功能和使用场景略有不同。
functools.lru_cache
lru_cache表示“最近最少使用”缓存。它是一个装饰器用于缓存函数调用的结果。当缓存达到设定的最大容量时会丢弃最近最少使用的缓存项。这对于一些计算量大且频繁调用的函数非常有用。 语法functools.lru_cache(maxsize128, typedFalse) 参数 maxsize指定缓存的最大容量。如果设置为None缓存大小不受限制。typed如果设置为True则会将不同类型的参数视为不同的调用例如f(3)和f(3.0)会分别缓存。 示例 from functools import lru_cachelru_cache(maxsize100)
def expensive_function(x):# 模拟耗时计算return x * xfunctools.cache
cache是一个更简单版本的缓存装饰器。它是lru_cache(maxsizeNone)的别名表示提供一个不受限制的缓存。这在需要缓存所有函数调用结果且不考虑缓存淘汰策略时非常有用。 语法functools.cache 示例 from functools import cachecache
def expensive_function(x):# 模拟耗时计算return x * x关键区别 淘汰策略 lru_cache使用最近最少使用的淘汰策略。当缓存达到最大容量时丢弃最近最少使用的项。cache没有淘汰策略缓存项数量不受限制。 定制化 lru_cache允许设置缓存大小maxsize和类型敏感性typed。cache没有定制化选项相当于lru_cache(maxsizeNone)。
使用场景
lru_cache适用于需要限制内存使用且对使用顺序敏感的缓存场景。cache适用于需要简单且不受限制的缓存场景。
leetcode
题目https://leetcode.cn/problems/special-permutations/description/
我讲下述代码提交后发现 lru_cache(maxsizeNone) 时间超时 cache 能够成功提交 建议大家leetcode 刷题的时候还是使用 cache 好一点简单无脑还快一点 class Solution:def specialPerm(self, nums: List[int]) - int:cache# lru_cache(maxsizeNone)def dfs(rear:int, lefts: tuple):if len(lefts) 0:return 1res 0for item in lefts:if item % rear 0 or rear % item 0:res dfs(item, tuple(set(lefts) - set([item])))return res % (1e9 7)res 0for item in nums:res dfs(item, tuple(set(nums) - set([item])))return int(res % (1e9 7))