web-dev-qa-db-fra.com

Comment dormir une milliseconde en Perl?

Comment puis-je dormir moins d'une seconde en Perl?

71
ˈoʊ sɪks

De la page Perldoc sur sleep :

Pour les retards d'une granularité inférieure à une seconde, le module Time :: HiRes (à partir de CPAN et à partir de la partie Perl 5.8 de la distribution standard) fournit usleep ().

En fait, il fournit usleep() (qui dort en microsecondes) et nanosleep() (qui dort en nanosecondes). Vous voudrez peut-être usleep(), ce qui devrait vous permettre de traiter des nombres plus faciles. 1 milliseconde de sommeil (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 à cette fin, vous pourrez également utiliser la fonction intégrée select() :

# Sleep for 250 milliseconds
select(undef, undef, undef, 0.25);
104
Chris Lutz

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

34
Greg

De perlfaq8 :


Comment puis-je dormir () ou alarm () moins d'une seconde?

Si vous souhaitez une granularité plus fine que la durée d'une seconde fournie par la fonction sleep (), le moyen le plus simple consiste à utiliser la fonction select () décrite dans la section select in perlfunc. Essayez les modules Time :: HiRes et BSD :: Itimer (disponibles auprès de CPAN et à partir de Perl 5.8 Time :: HiRes fait partie de la distribution standard).

12
brian d foy

Utilisez Time :: HiRes .

6
TML

Une recherche rapide sur "Minuteurs haute résolution Perl" a donné une référence à Time :: HiRes . Peut-être que c'est ce que vous voulez.

4
JesperE