我编写了一个简单的Flask应用来测试其内存使用情况。
这是代码。
from flask import Flask
app = Flask(__name__)
@app.route("/")
def hello():
with open("file.txt", "r") as fd:
text = fd.read()
return "Hello World!"
if __name__ == "__main__":
app.run(host="0.0.0.0")
file.txt
由此命令创建,其大小为50MB。
base64 /dev/urandom | head -c 50000000 > file.txt
使用以下命令运行它:
python3 test.app
如果在没有读取file.txt
的情况下运行,则内存使用量为18448KB。
如果正在运行并阅读file.txt
,则内存使用量为18988KB。
此文件为50MB,但内存使用量仅增加540KB。我不了解Python的工作原理。
答案 0 :(得分:2)
因为视图退出后内存被垃圾收集。在视图运行的短时间内,您确实会使用50MB的额外内存。
这与Flask无关,使用常规Python函数读取此类文件然后丢弃它也会发生同样的事情。