VS Code Flask отладка выполняется намного медленнее по сравнению с Flask из командной строки (с такими же параметрами) - PullRequest
0 голосов
/ 06 апреля 2020

В настоящее время я нахожусь на ранней стадии разработки приложения 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)

1 Ответ

0 голосов
/ 27 апреля 2020

Это просто накладные расходы на использование отладчика из-за необходимости запуска в приложении Flask. Если вы используете «Выполнить без отладки» в VS Code, вы не увидите замедления.

...