Нужен способ подсчитать время выполнения команды Unix в моем скрипте Python

1

Ну, у меня есть скрипт python для тестирования продукта (на работе), который в определенных точках кода запускает некоторые скрипты bash.sh для тестирования определенных частей продукта.

Один скрипт bash запускает команду для запуска ffplay с подключенным тестовым устройством, чтобы проверить, как быстро он реагирует и фактически начинает запись.

Как я могу измерить время из точки subprocess.Popen('bash test.sh', shell=True) (который содержит команду gnome-terminal для запуска теста) запускается до точки, когда открывается окно ffplay, и я могу см. прямую трансляцию (от 2 до 3 секунд).

Я действительно искал работу, прежде чем попасть сюда, но все, что я нашел, связано с использованием "времени" перед командой терминала, чтобы получить реальный, пользовательский и sys-вывод времени, но это не работает для меня, и я ожидал, что что-то связанное с подпроцессом, или что-то остальное.

Любые советы очень ценятся! Спасибо!

Теги:
sh

3 ответа

0

Импорт модуля времени, а затем создание начала финиша после завершения вашего подпроцесса и возврат разницы:

start = time.time()
if whatever_your_function_is_called) == True:
  finish = time.time()
  print "time to complete task was: %s" % (finish - start)

... это возможность.

0

Там модуль специально для того, что вам нужно, 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
0

То, что я сделал для измерения времени в скрипте 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 

это печатает секунды и микросекунды до и после выполнения. Вы также можете включить минуты, выполнить расчет после - до и распечатать это. Но для меня этого было достаточно, чтобы найти узкие места в моем сценарии.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню