Es ist, weil ich glaube, dass dieser Titel tatsächlich hilfreicher ist. Lassen Sie mich versuchen, dies zu argumentieren. Was BDF getan hat, war die Frage im Titel zu duplizieren, die keine Ausdruckskraft hinzufügt. Als ich im Internet nach der Antwort suchte, suchte ich tatsächlich nach einem Millisekunden-Schlaf und nicht nach einem "kürzer als eine Sekunde" Schlaf. Ich sage, diese Version hat eine bessere Chance, durch andere Google-Suchanfragen getroffen zu werden als die von BDF. Bitte korrigieren Sie mich, falls ich falsch liege.
Für Verzögerungen mit einer feineren Granularität von mehr als einer Sekunde bietet das Time :: HiRes- Modul (von CPAN und ab Perl 5.8 Teil der Standarddistribution) usleep ().
Tatsächlich liefert es usleep()(was in Mikrosekunden schläft) und nanosleep()(was in Nanosekunden schläft). Vielleicht möchten Sie usleep(), was Sie mit einfacheren Zahlen umgehen lassen sollte. 1 Millisekunde Schlaf (jeweils):
use strict;
use warnings;
use Time::HiRes qw(usleep nanosleep);
# 1 millisecond == 1000 microseconds
usleep(1000);
# 1 microsecond == 1000 nanoseconds
nanosleep(1000000);
Wenn Sie dazu kein Modul laden möchten (oder können), können Sie möglicherweise auch die integrierte select()Funktion verwenden:
# Sleep for 250 millisecondsselect(undef, undef, undef, 0.25);
Vorsichtsmaßnahme: Obwohl Sie nanosleep (1) könnten, haben viele Betriebssysteme eine minimale Granularität; zB glaube ich, dass es in Windows XP 1 ms ist, so dass Sie dort noch 1000000 ns schlafen würden.
Piskvor verließ das Gebäude
13
Auf der Seite zu Time :: HiRes heißt es etwa: "Wenn Sie nanosleep () benötigen, sollten Sie überlegen, ob Perl das beste Tool für Ihren Job ist oder nicht."
Chris Lutz
4
Es gibt auch Time :: HiRes :: sleep (0.3), das 0,3 Sekunden lang schläft.
Peter N Lewis
34
Zeit :: HiRes:
use Time::HiRes;
Time::HiRes::sleep(0.1); #.1 seconds
Time::HiRes::usleep(1); # 1 microsecond.
Wie kann ich weniger als eine Sekunde schlafen () oder alarmieren ()?
Wenn Sie eine feinere Granularität als die von der Funktion sleep () bereitgestellte 1 Sekunde wünschen, können Sie am einfachsten die Funktion select () verwenden, die in select in perlfunc dokumentiert ist. Probieren Sie die Module Time :: HiRes und BSD :: Itimer aus (erhältlich bei CPAN und ab Perl 5.8. Time :: HiRes ist Teil der Standarddistribution).
Antworten:
Von der Perldoc-Seite zum Thema Schlaf :
Tatsächlich liefert es
usleep()
(was in Mikrosekunden schläft) undnanosleep()
(was in Nanosekunden schläft). Vielleicht möchten Sieusleep()
, was Sie mit einfacheren Zahlen umgehen lassen sollte. 1 Millisekunde Schlaf (jeweils):use strict; use warnings; use Time::HiRes qw(usleep nanosleep); # 1 millisecond == 1000 microseconds usleep(1000); # 1 microsecond == 1000 nanoseconds nanosleep(1000000);
Wenn Sie dazu kein Modul laden möchten (oder können), können Sie möglicherweise auch die integrierte
select()
Funktion verwenden:# Sleep for 250 milliseconds select(undef, undef, undef, 0.25);
quelle
Zeit :: HiRes:
use Time::HiRes; Time::HiRes::sleep(0.1); #.1 seconds Time::HiRes::usleep(1); # 1 microsecond.
http://perldoc.perl.org/Time/HiRes.html
quelle
Von perlfaq8 :
Wie kann ich weniger als eine Sekunde schlafen () oder alarmieren ()?
Wenn Sie eine feinere Granularität als die von der Funktion sleep () bereitgestellte 1 Sekunde wünschen, können Sie am einfachsten die Funktion select () verwenden, die in select in perlfunc dokumentiert ist. Probieren Sie die Module Time :: HiRes und BSD :: Itimer aus (erhältlich bei CPAN und ab Perl 5.8. Time :: HiRes ist Teil der Standarddistribution).
quelle
Verwenden Sie Time :: HiRes .
quelle
Ein kurzes Googeln über "Perl High Resolution Timer" gab einen Hinweis auf Time :: HiRes . Vielleicht ist es das, was du willst.
quelle
system "sleep 0.1";
macht den Trick.
quelle