Измерение времени выполнения скриптов Python

В настоящее время я работаю над проектом ML NLP и хочу измерить время выполнения определенных частей, а также потенциально предсказать, сколько времени займет выполнение. Например, я хочу измерить процесс обучения ML (включая подпроцессы, такие как часть предварительной обработки данных). Я искал в Интернете и наткнулся на разные модули Python, которые могут измерять время выполнения функций (например, time или timeit). Однако я до сих пор не нашел конкретного решения для прогнозирования времени, которое потребуется для выполнения функции. Я думал о том, чтобы запустить код несколько раз, сохранить значения (data_size, time), а затем использовать их для экстраполяции для будущих данных. Я также подумал о том, чтобы затем обновить эту оценку с учетом времени, которое потребовалось для выполнения нескольких частей функции (например, увидеть, какая часть процесса была вычислена, сколько времени это заняло, а затем использовать это для корректировки оставшегося времени).

Тем не менее, я не уверен ни в чем из этого, и я хотел посмотреть, есть ли лучшие варианты, о которых я не знал, поэтому, если у кого-то есть лучшая идея, я был бы благодарен, если бы вы могли поделиться ею.


person J.Doe    schedule 22.04.2020    source источник
comment
Ваша главная цель — предсказать, сколько времени потребуется для выполнения функций? Или вы хотите просто их измерить?   -  person Josh Clark    schedule 22.04.2020
comment
Вопрос к machine-learning отношения не имеет - просьба не спамить неактуальными тегами (удалено).   -  person desertnaut    schedule 22.04.2020
comment
@ Джош Оба. Но мой главный вопрос будет заключаться в том, как предсказать, поскольку я думаю, что измерение того, сколько времени требуется для запуска определенных функций, было бы легко с помощью одного из модулей, которые я упомянул выше.   -  person J.Doe    schedule 22.04.2020


Ответы (1)


Вы изучали использование профилирования? Он должен давать подробную разбивку по времени выполнения функции, количеству вызовов и т. д. Вам нужно будет выполнить скрипт с профилированием, и тогда вы получите подробную разбивку. https://docs.python.org/3/library/profile.html#module-cProfile

Если вам нужны своевременные отчеты о ходе работы, я видел пару библиотек. https://pypi.org/project/tqdm/ https://pypi.org/project/progressbar2/

Надеюсь, это поможет!

person foll_person    schedule 22.04.2020