No project description provided
Project description
gqylpy-cache
如其名,
gqylpy_cache
实现缓存功能,可缓存某个函数或某个类中定义的所有方法的返回值。我想你一定遇到过这样的情况:你的程序中有一个函数会被多次调用,并且返回值不变。你会怎么做?为提高代码效率,你会先调用一次该函数并把返回值存到一个变量,之后就使用这个变量,而不再重复调用该函数。是这样吗?那太Low了。现在,我传授你一种更高明的方案。使用
gqylpy_cache
模块,直接缓存函数返回值。
gqylpy_cache
有两种使用方式:当做基类使用,将缓存其派生类中定义的所有方法的返回值;当做装饰器使用,将缓存被装饰函数的缓存值。
pip3 install gqylpy_cache
缓存类中方法的返回值
import gqylpy_cache
class Alpha(gqylpy_cache):
...
此时,类 Alpha
中定义的所有方法以及property
属性,在被调用一次后,其返回值都将被缓存,缓存在 __cache_pool__
属性中。此后的每次调用,只要参数不变,都是直接从 __cache_pool__
中取值,不会重复执行相关代码,大幅减少程序功耗并提高代码可读性。
上述缓存功能默认只作用于单个实例,每个实例都有自己的 __cache_pool__
属性,若希望 Alpha
的所有实例共享同一份缓存,可启用 __shared_instance_cache__
属性:
class Alpha(gqylpy_cache):
__shared_instance_cache__ = True
若希望某个方法或property
不被缓存,可将其加入到 __not_cache__
列表中:
class Alpha(gqylpy_cache):
__not_cache__ = [method1, method2, ...]
另外,此缓存功能不作用于基类中的方法和任何魔化方法。
缓存函数返回值
import gqylpy_cache
@gqylpy_cache
def alpha():
...
此时,函数 alpha
在被调用一次后,其返回值将被缓存。此后的每次调用,只要参数不变,都是直接从缓存中取值,而不会重复执行 alpha
函数。
若希望按周期更新缓存值,可使用 timeout
参数:
@gqylpy_cache(timeout=60)
def alpha():
...
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distributions
Built Distribution
Hashes for gqylpy_cache-1.0-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | fd3184dec89b31dee2414ad0c39026c50eb06f8f46d917fca93d981c141203ed |
|
MD5 | 580249638f26279c39fba4d0883911ec |
|
BLAKE2b-256 | 999f1d36bb91a3a2e9158c414d612de2e6dc5a4206784c5049fc4452e58fb92c |