与从命令行(使用相同的参数)运行Flask相比,VS代码Flask调试运行得慢得多



我目前正处于VS Code中烧瓶应用程序的早期开发阶段,我不明白为什么使用VS Code调试器启动烧瓶应用程序和从命令行启动烧瓶应用(VS代码调试速度慢5到6倍(之间存在巨大的运行时差异,但烧瓶参数相同。这似乎主要发生在我使用pandas/numpy对象时。

我的launch.json中有以下内容(仅与"Python:Flask"相关的内容

{
"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.pyexport FLASK_ENV=开发烧瓶运行-没有调试器-没有重新加载

以下信息在启动时显示(与第一个信息相同(:

* 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时,一个页面的运行时间大约需要800ms,而当我从VS代码调试器运行Fla斯克时,则需要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)

这只是使用调试器的开销,因为它必须在Flask应用程序中运行。如果你在VS代码中使用"运行而不调试",你不会看到速度减慢。

最新更新