В настоящее время я нахожусь на ранней стадии разработки приложения flask в VS Code и не понимаю, почему у меня огромные различия во время выполнения между запуском приложения flask с использованием отладчика VS Code и запуском flask приложение из командной строки (в 5-6 раз медленнее при отладке кода VS), но с теми же параметрами flask. Похоже, это в основном происходит, когда я использую объекты pandas / numpy.
У меня есть следующий контент в моем запуске. 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 из командной строки со следующими командами: export FLASK_APP = test_flask_app.py export FLASK_ENV = devlopment flask run --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)
Странно то, что время выполнения одной страницы занимает около 800 мс, когда я запускаю Flask непосредственно из терминала, и 5–6 секунд, когда я запускаю Flask из отладчика кода VS.
Я считаю, что все мои параметры идентичны (и я, конечно, могу запустить 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)