¿Cómo duermo un milisegundo en Perl?


¿Cómo duermo menos de un segundo en Perl?

 68
Author: zengr, 2009-05-22

6 answers

De la página de Perldoc en sleep :

Para retrasos de mayor granularidad que un segundo, el módulo Time::HiRes (desde CPAN, y a partir de Perl 5.8 parte de la distribución estándar) proporciona usleep().

En Realidad, proporciona usleep() (que duerme en microsegundos) y nanosleep() (que duerme en nanosegundos). Es posible que desee usleep(), lo que debería permitirle lidiar con números más fáciles. 1 milisegundo de sueño (usando cada uno):

use strict;
use warnings;

use Time::HiRes qw(usleep nanosleep);

# 1 millisecond == 1000 microseconds
usleep(1000);
# 1 microsecond == 1000 nanoseconds
nanosleep(1000000);

Si no lo haces desea (o no puede) cargar un módulo para hacer esto, también puede usar el módulo integrado select() función:

# Sleep for 250 milliseconds
select(undef, undef, undef, 0.25);
 99
Author: Chris Lutz,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-05-22 15:34:13

Tiempo:: Contrataciones:

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

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

 34
Author: Greg,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-05-22 09:09:50

De perlfaq8:


¿Cómo puedo dormir () o alarm () durante menos de un segundo?

Si desea una granularidad más fina que el segundo 1 que proporciona la función sleep (), la forma más fácil es usar la función select() como se documenta en select en perlfunc. Pruebe los módulos Time::HiRes y BSD::Hmer (disponibles en CPAN, y a partir de Perl 5.8 Time::HiRes es parte de la distribución estándar).

 12
Author: brian d foy,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-05-22 11:21:45
 6
Author: TML,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-05-22 08:44:02

Una búsqueda rápida en Google de "temporizadores de alta resolución perl" dio una referencia a Time::HiRes. Tal vez sea lo que quieres.

 4
Author: JesperE,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-05-22 08:44:05
system "sleep 0.1";

Hace el truco.

 -1
Author: Tim Tian,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-02-24 00:09:12