Профилирование модуля Python из командной строки

У меня есть проект Python, где я выполняю приложение в виде модуля, используя -m флаг. Так что-то вроде:

python -m apps.validate -i input.mp4

Теперь я хочу профилировать его с помощью командной строки. Так что встроенные примеры предлагают вызывать сам модуль cProfile. Тем не менее, я не могу сделать что-то вроде:

python -m cProfile apps.validate -i input.mp4

Однако это приводит к ошибке "Нет такого файла или каталога". Я не могу просто пойти в apps каталог и запуск validate.py из-за относительного импорта.

Есть ли способ профилировать модуль в командной строке?

0 ответов

Вместо запуска cProfile в оболочке, возможно, вы можете использовать cProfile в своем скрипте python, добавив некоторый код в apps.validate или создав новый скрипт и импортируя apps.validate таким образом. Может какая-то опечатка внизу:)

import cProfile
import sys

def run_validate(args): 
    # run your apps.validate code with shell arguments args here
    pass

if __name__ == '__main__':
    pr = cProfile.Profile()
    pr.enable()
    run_validate(*sys.argv)
    pr.disable()
    pr.print_stats()

затем просто запустите исходный скрипт: python -m apps.validate -i input.mp4

Другие вопросы по тегам