描述
- 这个问题的出现是在我一个同事在django项目中的某一个接口读取yaml文件,从而致使接口效率极其的慢的小bug。
问题解决
- 其实这个问题很好解决的,对于一个打开操作,只需要在程序中进行一次就可以了。
- 那么如何只进行一次?就可以提供一个文件级别的私有函数打开这个文件,定义一个全局变量调用这个函数即可。如果本身需要对这个文件的内容提供操作接口的话,那么再定义一个函数深拷贝这个内容的内容进行操作就好了。
- 为什么这样可行呢?
- 因为在一个程序在运行过程中,所有模块级的变量都会被保存在内存中,不会被释放,于是就不需要经常的进行文件的打开和关闭操作了。所以就快了的。
- 简单演示一下:
import json from copy import deepcopy def __open_json(): with open('path.json', 'r') as f: return json.load(f) CONTENT = __open_json() def open_json(): """对 deepcopy CONTENT 进行操作即可""" content = deepcopy(CONTENT) return content