Ну, у меня есть скрипт python для тестирования продукта (на работе), который в определенных точках кода запускает некоторые скрипты bash.sh для тестирования определенных частей продукта.
Один скрипт bash запускает команду для запуска ffplay с подключенным тестовым устройством, чтобы проверить, как быстро он реагирует и фактически начинает запись.
Как я могу измерить время из точки subprocess.Popen('bash test.sh', shell=True)
(который содержит команду gnome-terminal для запуска теста) запускается до точки, когда открывается окно ffplay, и я могу см. прямую трансляцию (от 2 до 3 секунд).
Я действительно искал работу, прежде чем попасть сюда, но все, что я нашел, связано с использованием "времени" перед командой терминала, чтобы получить реальный, пользовательский и sys-вывод времени, но это не работает для меня, и я ожидал, что что-то связанное с подпроцессом, или что-то остальное.
Любые советы очень ценятся! Спасибо!
Импорт модуля времени, а затем создание начала финиша после завершения вашего подпроцесса и возврат разницы:
start = time.time()
if whatever_your_function_is_called) == True:
finish = time.time()
print "time to complete task was: %s" % (finish - start)
... это возможность.
Там модуль специально для того, что вам нужно, timeit (https://docs.python.org/2/library/timeit.html):
$ python -m timeit '"-".join(str(n) for n in range(100))'
10000 loops, best of 3: 40.3 usec per loop
$ python -m timeit '"-".join([str(n) for n in range(100)])'
10000 loops, best of 3: 33.4 usec per loop
$ python -m timeit '"-".join(map(str, range(100)))'
10000 loops, best of 3: 25.2 usec per loop
То, что я сделал для измерения времени в скрипте Python, было:
from datetime import datetime
def printnow(string):
dt = datetime.now()
print string, dt.second, dt.microseconds
# My set of actions
dt = datetime.now()
print string, dt.second, dt.microseconds
это печатает секунды и микросекунды до и после выполнения. Вы также можете включить минуты, выполнить расчет после - до и распечатать это. Но для меня этого было достаточно, чтобы найти узкие места в моем сценарии.