Caching

缓存#

Vaex 可以缓存任务结果,例如聚合或用于 groupby 操作的内部哈希映射,以使重复计算更快,但需要计算缓存键并存储/检索缓存值。

在内部,Vaex 计算指纹(例如数据的哈希值,或文件路径和修改时间)以创建跨进程相似的缓存键,因此进程的重新启动很可能会导致相似的哈希键。

查看缓存的配置。

缓存可以像这样全局开启:

[1]:
import vaex
df = vaex.datasets.titanic()
vaex.cache.memory();  # cache on globally

可以通过以下方式验证缓存是否已开启:

[2]:
vaex.cache.is_on()
[2]:
True

缓存可以再次全局关闭:

[3]:
vaex.cache.off()
vaex.cache.is_on()
[3]:
False

缓存也可以通过上下文管理器开启,之后会再次关闭。这里我们使用磁盘缓存。磁盘缓存在进程之间共享,非常适合重启的进程,或者在具有多个工作者的Web服务中使用Vaex时。考虑以下示例:

[4]:
with vaex.cache.disk(clear=True):
    print(df.age.mean())  # The very first time the mean is computed
29.8811345124283
[5]:
# outside of the context manager, the cache is still off
vaex.cache.is_on()
[5]:
False
[6]:
with vaex.cache.disk():
    print(df.age.mean())  # The second time the result is read from the cache
29.8811345124283
[7]:
vaex.cache.is_on()
[7]:
False