Как я могу спать в течение миллисекунды в Perl?


Как я могу спать меньше секунды в Perl?

6 68

6 ответов:

со страницы 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);

Time:: HiRes:

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

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

с perlfaq8:


как я могу спать () или будильник () в течение секунды?

Если вы хотите более тонкую детализацию, чем 1 секунда, которую обеспечивает функция sleep (), самый простой способ-использовать функцию select (), как описано в select in perlfunc. Попробуйте модули Time::HiRes и BSD::Itimer (доступны в CPAN и начиная с Perl 5.8 Time::HiRes является частью стандартного дистрибутива).

использовать Time:: HiRes.

быстрый поиск в интернете на "Perl High resolution timers" дал ссылку на Time:: HiRes. Может быть, это то, что вы хотите.

system "sleep 0.1";

делает трюк.