如果我停止它怎么能获得执行时间?示例我运行我的perl脚本,然后按终端快捷键CTRL + C或CTRL + Z来停止它,然后发布执行时间。这是有效的吗?
在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;
}