Perlで1秒未満スリープするにはどうすればよいですか?
6 に答える
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から:
sleep() または alarm() を 1 秒未満にするにはどうすればよいですか?
sleep() 関数が提供する 1 秒よりも細かい粒度が必要な場合、select() 関数を使用するのが最も簡単な方法です。Time::HiRes と BSD::Itimer モジュールを試してみてください (CPAN から入手可能で、Perl 5.8 以降では Time::HiRes は標準配布の一部です)。
Time::HiResを使用します。
「perl high resolution timers」をすばやくグーグル検索すると、Time::HiResへの参照が得られました。多分それはあなたが望むものです。