在 Perl 中如何睡眠一毫秒?

在 Perl 中如何睡眠少于一秒钟?

122169 次浏览

时间:

  use Time::HiRes;
Time::HiRes::sleep(0.1); #.1 seconds
Time::HiRes::usleep(1); # 1 microsecond.

Http://perldoc.perl.org/time/hires.html

在“ perl 高分辨率计时器”上快速搜索了一下,发现了一个关于 时间: : 雇员的参考资料。

来自 睡觉的 Perldoc 页面:

对于粒度小于一秒的延迟,时间: : 雇员模块(来自 CPAN,从标准发行版的 Perl 5.8部分开始)提供 ussleep ()。

实际上,它提供了 usleep()(以微秒为单位睡眠)和 nanosleep()(以纳秒为单位睡眠)。您可能需要 usleep(),它应该让您处理更简单的数字。1毫秒睡眠(每次使用) :

use strict;
use warnings;


use Time::HiRes qw(usleep nanosleep);


# 1 millisecond == 1000 microseconds
usleep(1000);
# 1 microsecond == 1000 nanoseconds
nanosleep(1000000);

如果你不想(或者不能)加载一个模块来做这件事,你也可以使用内置的 select()函数:

# Sleep for 250 milliseconds
select(undef, undef, undef, 0.25);

来自 Perlfaq8:


我怎样才能在一秒钟之内睡着或闹钟响起呢?

如果希望获得比 sleep ()函数提供的1秒更细的粒度,最简单的方法是使用 perlfunc 中 select 中记录的 select ()函数。尝试 Time: : HiRes 和 BSD: : Itimer 模块(可从 CPAN 获得,从 Perl 5.8开始 Time: : HiRes 是标准发行版的一部分)。

system "sleep 0.1";

有用。