sqlite函数缓存
FunctionalCache的Python项目详细描述
没有依赖关系,没有外部服务功能缓存。
只依赖于标准python库中的sqlite3以及标准库中的hashlib.sha1和json.dumps。
注意:大多数限制是由于sqlite造成的。还有其他的图书馆可以让你从这些限制中解脱出来。 此外,这可能不可用作“真实”缓存,因为没有“到期”选项。这就是为什么它是功能缓存:
f(x) => y, where function f always gives output y given input x.
因此,它可用于昂贵的和/或递归函数。
递归阶乘函数示例:
fromfunctional_cacheimportFunctionalCachef=FunctionalCache("factorial.db")@f.cachedeffactorial(n:int)->str:"""factorial function that returns the answer in a string. This so sqlite can save the large integers. """ifn<2:return"1"else:returnstr(n*int(factorial(n-1)))defbuild_up_factorial(n):print("This will build a factorial database until {n}!".format(n=n))foriinrange(20,n,20):print("now at {i}".format(i=i),end="\r")factorial(i)n=900build_up_factorial(n)print("{}! = {}".format(n,factorial(900)))