如果我停止它怎么能获得执行时间?示例我运行我的perl脚本,然后按终端快捷键CTRL + C或CTRL + Z来停止它,然后发布执行时间。这是否可行?
答案 0 :(得分:6)
在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程序。它适用于任何程序。
答案 1 :(得分:2)
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;
}