82

如何在 Perl 中睡不到一秒钟?

4

6 回答 6

116

从关于sleep的 Perldoc 页面:

对于比一秒更精细的延迟,Time::HiRes模块(来自 CPAN,从标准发行版的 Perl 5.8 部分开始)提供了 usleep()。

实际上,它提供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);
于 2009-05-22T08:44:19.120 回答
36

时间::HiRes:

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

http://perldoc.perl.org/Time/HiRes.html

于 2009-05-22T08:43:28.577 回答
13

perlfaq8


我怎样才能 sleep() 或 alarm() 不到一秒钟?

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

于 2009-05-22T11:21:45.620 回答
7

使用时间::HiRes

于 2009-05-22T08:44:02.617 回答
5

对“perl 高分辨率计时器”的快速谷歌搜索给出了对Time::HiRes的引用。也许这就是你想要的。

于 2009-05-22T08:44:05.563 回答
4
system "sleep 0.1";

成功了。

于 2017-02-23T23:03:01.177 回答