Як я можу спати коротше секунди в Perl?
Як я можу спати коротше секунди в Perl?
Відповіді:
На сторінці 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);
Час :: HiRes:
use Time::HiRes;
Time::HiRes::sleep(0.1); #.1 seconds
Time::HiRes::usleep(1); # 1 microsecond.
Від perlfaq8 :
Як я можу спати () або будильник () менше секунди?
Якщо ви хочете отримати детальнішу деталізацію, ніж 1 секунда, яку надає функція sleep (), найпростіший спосіб - скористатися функцією select (), як описано в select у perlfunc. Спробуйте модулі Time :: HiRes та BSD :: Itimer (доступні від CPAN, починаючи з Perl 5.8 Time :: HiRes є частиною стандартного розподілу).
Використовуйте час :: HiRes .
Швидке гуглиння на "таймерах з високою роздільною здатністю perl" дало посилання на Time :: HiRes . Можливо, це те, що ти хочеш.
system "sleep 0.1";
робить трюк.