82

Perlで1秒未満スリープするにはどうすればよいですか?

4

6 に答える 6

116

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);
于 2009-05-22T08:44:19.120 に答える
36

時間::ハイレゾ:

  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() を 1 秒未満にするにはどうすればよいですか?

sleep() 関数が提供する 1 秒よりも細かい粒度が必要な場合、select() 関数を使用するのが最も簡単な方法です。Time::HiRes と BSD::Itimer モジュールを試してみてください (CPAN から入手可能で、Perl 5.8 以降では Time::HiRes は標準配布の一部です)。

于 2009-05-22T11:21:45.620 に答える
7

Time::HiResを使用します。

于 2009-05-22T08:44:02.617 に答える
5

「perl high resolution timers」をすばやくグーグル検索すると、Time::HiResへの参照が得られました。多分それはあなたが望むものです。

于 2009-05-22T08:44:05.563 に答える