Как мне спать на миллисекунду в Perl? - PullRequest
70 голосов
/ 22 мая 2009

Как мне спать на секунду в Perl?

Ответы [ 6 ]

103 голосов
/ 22 мая 2009

Со страницы Perldoc на sleep :

Для задержек более тонкой детализации, чем одна секунда, модуль 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);
34 голосов
/ 22 мая 2009

Время :: HiRes:

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

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

12 голосов
/ 22 мая 2009

С perlfaq8 :


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

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

6 голосов
/ 22 мая 2009

Использование Время :: HiRes .

4 голосов
/ 22 мая 2009

Быстрое прибегание к поиску «таймеров высокого разрешения Perl» дало ссылку на Time :: HiRes . Может быть, это то, что вы хотите.

0 голосов
/ 24 февраля 2017
system "sleep 0.1";

делает свое дело.

...