Perlで1秒より短い時間スリープするにはどうすればよいですか?
sleep のPerldocページから:
1秒よりも細かい粒度の遅延の場合、 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);
_
時間::高解像度:
use Time::HiRes;
Time::HiRes::sleep(0.1); #.1 seconds
Time::HiRes::usleep(1); # 1 microsecond.
perlfaq8 から:
1秒未満でsleep()またはalarm()するにはどうすればよいですか?
Sleep()関数が提供する1秒よりも細かい粒度が必要な場合、最も簡単な方法は、perlfuncのselectに記載されているselect()関数を使用することです。 Time :: HiResおよびBSD :: Itimerモジュールを試してください(CPANから入手でき、Perl 5.8 Time :: HiResからは標準配布の一部です)。
Time :: HiRes を使用します。
「Perl高解像度タイマー」の簡単なグーグルで Time :: HiRes を参照しました。たぶんそれはあなたが望むものです。