Comment dormir pendant moins d'une seconde en Perl ?
Réponses
Trop de publicités?Depuis la page Perldoc sur dormir :
Pour les retards d'une granularité plus fine qu'une seconde, la fonction Temps::HiRes (du CPAN, et à partir de Perl 5.8 faisant partie de la distribution standard) fournit usleep().
En fait, il fournit usleep()
(qui dort en microsecondes) et nanosleep()
(qui se compte en nanosecondes). Vous pouvez vouloir usleep()
qui devrait vous permettre de traiter des nombres plus faciles. Sommeil de 1 milliseconde (en utilisant chacun) :
use strict;
use warnings;
use Time::HiRes qw(usleep nanosleep);
# 1 millisecond == 1000 microseconds
usleep(1000);
# 1 microsecond == 1000 nanoseconds
nanosleep(1000000);
Si vous ne voulez pas (ou ne pouvez pas) charger un module pour ce faire, vous pouvez également utiliser la fonction intégrée select()
fonction :
# Sleep for 250 milliseconds
select(undef, undef, undef, 0.25);
De perlfaq8 :
Comment faire pour que sleep() ou alarm() dure moins d'une seconde ?
Si vous voulez une granularité plus fine que la seconde fournie par la fonction sleep(), le moyen le plus simple est d'utiliser la fonction select() comme documenté dans select in perlfunc. Essayez les modules Time::HiRes et BSD::Itimer (disponibles sur CPAN, et à partir de Perl 5.8 Time::HiRes fait partie de la distribution standard).
Utilisez Temps::HiRes .
Une rapide recherche sur "perl high resolution timers" a donné une référence à Temps::HiRes . C'est peut-être ce que vous voulez.