Python打开json文件保存在内存中

时间:2018-05-17 15:16:14

标签: json python-3.x

问题,我有一个访问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.")

我假设连续多次打开和关闭此文件并不聪明。如果它没有打开并保持打开状态,我该如何只打开一次,如果需要,我可以在内存中访问。

1 个答案:

答案 0 :(得分:1)

在没有太多开销的情况下执行此操作的一种方法是使用standard lib's lru_cache。你可以用它来装饰一个函数,它会记住那个函数的结果(取决于参数,在这种情况下是none)。下次调用该函数时,结果将从内存中的缓存返回,而不是重新执行该函数。

正如您在本示例中所看到的,这对代码的添加非常简单。

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())

在这里我甚至删除文件以证明它确实有效,但我建议你不要:) 如果您运行此代码,您将看到JSON文件的内容打印两次。