是否有一个标准的位置来存储Python中的函数缓存文件?

问题描述 投票:2回答:1

我有这些脚本执行大量昂贵的计算。我做的一个优化是评估网格上昂贵的功能,缓存网格,并插入网格中的调用。将文件写入磁盘非常重要,以便将来的会话可以从缓存中受益。当这个脚本仅供我个人使用时,我可以将缓存放在任何地方。现在我想将它合并到一个包中以便更广泛地分发,我发现我需要有一些方法来知道哪些是kosher来存储包的缓存文件?我只是需要做出一些决定,还是应该遵循一些程序(例如让用户在安装时,运行时等修改目录)?

编辑:此代码还将具有基于插入来自其他来源的数据的功能。所以我也需要一个地方来存储它们,但需要知道它的标准位置以及如何检测特定安装的位置(在安装时硬编码的东西,或者Python模块可以检测它们的位置)在运行时重新安装?)。重点是,这个位置需要以我理解临时目录的方式持久化。因此,理想情况下,这可以在包的目录结构内部或用户主目录中的某个位置完成。如果在包的目录中,如果我必须具有创建用户可以修改的目录的权限的恶作剧,则可以接受。

python caching packaging memoization
1个回答
1
投票

我有同样的要求。

似乎要走的路是存储到~/.cache/<appname>(Linux)。

为了覆盖不同的操作系统,可以使用appdirs简化相似的位置,例如:

from appdirs import *
cachedir = user_cache_dir("<app name>") 

0
投票

我会考虑创建一个named temporary file,其前缀可以被脚本识别,以便可以在以后的会话中重新打开该文件。文件创建看起来像:

tempfile.NamedTemporaryFile(prefix='myApp', delete=False)

否则,我将默认使用当前工作目录,并提供一个选项,以便在运行时使用argparse设置文件夹。

© www.soinside.com 2019 - 2024. All rights reserved.