我目前正处于VS Code的flask应用程序的早期开发阶段,我不明白为什么在使用VS Code调试器启动flask应用程序和从命令行启动我的flask应用程序之间我在运行时会有巨大的差异。在VS代码调试中要慢5到6倍),但具有相同的flask参数。这似乎主要是在我使用pandas / numpy对象时发生的。
我在launch.json中具有以下内容(仅与“ Python:烧瓶”相关的内容
{ "name": "Python: Flask", "type": "python", "request": "launch", "module": "flask", "env": { "FLASK_APP": "test_flask_app.py", "FLASK_ENV": "development", }, "args": [ "run", "--no-debugger", "--no-reload", ], "jinja": true },
然后单击“开始调试”,并在终端中显示以下内容:
* Serving Flask app "test_flask_app.py" * Environment: development * Debug mode: on * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)
当我使用以下命令从命令行启动Flask时:导出FLASK_APP = test_flask_app.py出口FLASK_ENV =发展烧瓶运行--no-debugger --no-reload
以下信息在启动时显示(与第一个相同):
* Serving Flask app "test_flask_app.py" * Environment: development * Debug mode: on * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)
[奇怪的是,当我直接从终端运行Flask时,一页的运行时间大约需要800毫秒,而当我从VS Code调试器中运行Flask时,则需要5到6秒。
我相信我所有的参数都相同(当然我可以手动启动Flask,但是我想了解为什么运行时会有如此大的差异?
这是我使用的示例代码:
import time
import numpy as np
import pandas as pd
from flask import Flask
# vectorized function
def generateHeaderObject(text, level, calc, axis):
return "." * int(level) + text + '|' + str(False) + '|' + "" + '|' + \
"hdr " + axis + "ht" + (" " + axis + "agg" if calc else "")
# create sample dataframe
n = 1000000
df = pd.DataFrame(dict(
calc=np.random.choice(a=[False,True],size=n),
level=np.random.randint(1, 12, size=n),
id=np.random.randint(10000000, 99999999, size=n)
))
df['id'] = df['id'].astype(str)
app = Flask(__name__)
@app.route('/')
# ‘/’ URL is bound with hello_world() function.
def main():
# Calculate new column
start = time.time()
df['output'] = np.vectorize(generateHeaderObject)(
df['id'], df['level'], df['calc'], "r"
)
return 'runtime np.vectorize (ms): ' + str((time.time() - start) * 1000)
我目前处于使用VS Code开发Flask应用程序的早期阶段,我不明白为什么在使用VS Code调试器启动Flask应用程序与我何时之间存在巨大的运行时差异?
这只是使用调试器的开销,因为它必须在Flask应用程序中运行。如果在VS Code中使用“无需调试即可运行”,则不会看到速度下降的情况。