Как я могу получить время выполнения, если я его остановил? Пример. Я запустил свой скрипт perl, и я нажимаю клавишу CTRL + C или CTRL + Z, чтобы остановить ее, затем опубликуйте время выполнения. Это возможно или нет?Как получить время выполнения программы Perl?
ответ
В Linux вы можете использовать program time
для получения времени выполнения. Просто добавьте его в свой скрипт на Perl.
$ cat foo.pl
1 while 1;
$ time perl foo.pl
^C
real 0m1.006s
user 0m0.756s
sys 0m0.008s
Конечно, это не ограничивается программами Perl. Он работает для любой программы.
Perl имеет встроенную переменную, называемую: $^T
, которая является временем начала программы.
Примечание - на Unix CTRL-Z
останавливает процесс (SIGSTP) (который может быть продолжен), где CTRL-C
заставляет его выхода. (SIGINT)
Добавление обработчика для SIGINT
будет примерно таким.
$SIG{'INT'} = sub { warn "Start time: $^T\n, Run time:".(time() - $^T)."\n" };
Примечание - это фактически не будет бомбить вашу программу больше - если вы делаете это, вы, вероятно, следует die
, а также, в противном случае программа будет делать что-то неожиданное (например, не выход на Ctrl-C
- но это нормально, если это прерывание «текущая операция»)
Так обычно вы бы подключить один из других сигналов на , как SIGUSR1
или SIGUSR2
которые явно для определенного пользователя функций. (Вы можете затем kill -USR1 <pid>
)
#!/usr/bin/env perl
use strict;
use warnings;
$SIG{'INT'} = sub { warn "Started at $^T, runtime ".(time() - $^T)."\n"; die };
$SIG{'USR1'} = sub { warn "Started at $^T, runtime ".(time() - $^T)."\n";
warn "Program continuing\n"; };
while (1) {
sleep 1;
}
Nit: Ctrl-Z (в unix) отправляет 'SIGTSTP', поэтому вы можете заманить его в ловушку, если хотите. Не очень полезно здесь. Я думаю, он может быть в Windows, где Ctrl-Z приводит к EOF (аналогично Ctrl-D в unix). – ikegami
Отредактировано, хорошо. Привязка «нормальных» сигналов - это плохо. – Sobrique
Не работает, какая ошибка вы получаете? (обратите внимание, немного подстроил его ...) – Sobrique
- 1. Время выполнения программы
- 2. Получить имена полей во время выполнения программы
- 3. Время выполнения программы
- 4. Eclipse, чтобы получить время выполнения программы
- 5. Время выполнения программы Clojure
- 6. время выполнения программы HW Проблема
- 7. java.lang.NoSuchMethodError во время выполнения программы
- 8. Показывать ход выполнения во время выполнения программы
- 9. как получить время выполнения программы в терминале linux отдельно
- 10. Время выполнения многопоточной программы python
- 11. Уменьшить время выполнения Java-программы
- 12. вычислить время выполнения моей программы
- 13. sigsegv во время выполнения программы
- 14. Perl: Как получить обновления в реальном времени во время выполнения
- 15. Как найти время выполнения программы в Eclipse?
- 16. Как сократить время выполнения следующей программы
- 17. Как рассчитать время выполнения программы в streambase?
- 18. Как сократить время выполнения для Java-программы?
- 19. Как улучшить время выполнения этой программы?
- 20. Как messaure время выполнения программы, вызванной execvp?
- 21. Как оценить сложность программы во время выполнения?
- 22. Как объявить функцию во время выполнения программы?
- 23. Как уменьшить время выполнения моей программы?
- 24. Как просмотреть время выполнения моей программы?
- 25. Как загрузить модуль Perl во время выполнения?
- 26. Как получить время работы программы в Haskell
- 27. Perl: Как получить время эпохи
- 28. Просмотр списков поколения во время выполнения программы
- 29. Измените описание перечисления во время выполнения программы
- 30. Как получить имя программы в perl
Спасибо, это работает. –