为什么在Flask中读取大文本文件不会占用内存?

时间:2017-06-02 12:34:35

标签: python python-3.x flask

我编写了一个简单的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的工作原理。

1 个答案:

答案 0 :(得分:2)

因为视图退出后内存被垃圾收集。在视图运行的短时间内,您确实会使用50MB的额外内存。

这与Flask无关,使用常规Python函数读取此类文件然后丢弃它也会发生同样的事情。