我怎么在Perl中睡一个毫秒?

ˈoʊ*_*ɪks 72 perl sleep

我怎么在Perl中睡不到一秒钟?

Chr*_*utz 104

睡眠的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);
Run Code Online (Sandbox Code Playgroud)

如果您不想(或不能)加载模块来执行此操作,您也可以使用内置select()函数:

# Sleep for 250 milliseconds
select(undef, undef, undef, 0.25);
Run Code Online (Sandbox Code Playgroud)

  • Time :: HiRes页面上写着"如果你需要nanosleep(),你应该重新考虑Perl是否是你工作的最佳工具." (12认同)
  • 警告:虽然你可以使用nanosleep(1),但许多操作系统都有一些最小的粒度; 例如,我相信它在Windows XP中只有1毫秒,所以你仍然可以在那里睡100个ns. (7认同)
  • 还有Time :: HiRes :: sleep(0.3),它将睡眠.3秒. (4认同)

Gre*_*reg 34

时间::高分辨率:

  use Time::HiRes;
  Time::HiRes::sleep(0.1); #.1 seconds
  Time::HiRes::usleep(1); # 1 microsecond.
Run Code Online (Sandbox Code Playgroud)

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


bri*_*foy 12

来自perlfaq8:


如何在一秒钟内睡觉()或闹钟()?

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


Jes*_*erE 5

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