我正在为Python 3编写一个memoizing装饰器。计划是在一个临时文件中挑选缓存,以节省多次执行的时间。
如果包含修饰函数的文件已更改,则将删除缓存,就像__pycache__中的.pyc文件一样。然后我开始考虑通过将pickle缓存放在__pycache__中来整理用户的项目目录。在此目录中存储文件有副作用吗?这是误导或混淆?
答案 0 :(得分:0)
你应该......
__memo__
之类的特殊文件夹:这将允许您跨多次执行进行缓存。但是,您将“污染”应用程序的文件结构。您永远不会陷入__pycache__
的原因:
__pycache__
是特定于CPython的。虽然它很可能是你现在正在使用的实现,但是假设每个人都没有充分理由这样做是不可移植/安全/良好的做法。__pycache__
旨在作为透明优化,也就是说,任何人都不应该关心它是否存在。这是CPython人员的设计决定,所以你不应该绕过它。python3 -B myapp.py
,如果它不存在,则不会创建__pycache__
,否则将被忽略。__pycache__
,原因有几个。我至少做到了。__pycache__
内部的内容弄乱,因为“它不会污染应用程序的文件结构”是一种错觉。该目录可以完美地被视为“污染”。如果Python解释器已经污染了东西,为什么不能使用__memo__
呢?