问题,我有一个应用程序可以访问 json 文件中的数据。现在,每次应用程序需要数据时,我都会像这样打开和关闭文件。
def access_file():
try:
with open(my_file, 'r') as json_data:
json_data = json.load(json_data)
return json_data
except FileNotFoundError:
logging.error("my_file not found.")
Run Code Online (Sandbox Code Playgroud)
我认为连续多次打开和关闭此文件是不明智的。如果它没有打开,我如何只打开它一次并保持打开状态,然后我可以在需要时在内存中访问它。
没有太多开销的一种方法是使用标准库的lru_cache. 你可以用它装饰一个函数,它会记住那个函数的结果(取决于参数,在这种情况下没有)。下次调用该函数时,结果将从内存中的缓存中返回,而不是重新执行该函数。
正如您在本示例中所看到的,这只需对您的代码进行极少的添加即可。
import json
from functools import lru_cache
my_file = 'foo.json'
@lru_cache(maxsize=1)
def access_file():
try:
with open(my_file, 'r') as json_data:
json_data = json.load(json_data)
return json_data
except FileNotFoundError:
logging.error("my_file not found.")
print(access_file())
import os
os.remove(my_file)
print(access_file())
Run Code Online (Sandbox Code Playgroud)
在这里,我什至删除了该文件以证明它确实有效,但我建议您不要:) 如果您运行此代码,您将看到 JSON 文件的内容打印两次。
| 归档时间: |
|
| 查看次数: |
1411 次 |
| 最近记录: |