72 votes

Comment dormir pendant une milliseconde en Perl ?

Comment dormir pendant moins d'une seconde en Perl ?

104voto

Chris Lutz Points 34157

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);

34voto

Greg Points 1425

Temps::HiRes :

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

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

12voto

brian d foy Points 71781

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).

6voto

TML Points 6469

Utilisez Temps::HiRes .

4voto

JesperE Points 34356

Une rapide recherche sur "perl high resolution timers" a donné une référence à Temps::HiRes . C'est peut-être ce que vous voulez.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X