Làm cách nào để tôi ngủ trong thời gian ngắn hơn một giây ở Perl?
Làm cách nào để tôi ngủ trong thời gian ngắn hơn một giây ở Perl?
Câu trả lời:
Từ trang Perldoc khi ngủ :
Đối với những độ trễ có độ chi tiết nhỏ hơn một giây, mô-đun Time :: HiRes (từ CPAN và bắt đầu từ phần Perl 5.8 của phân phối chuẩn) cung cấp usleep ().
Trên thực tế, nó cung cấp usleep()
(ngủ trong micro giây) và nanosleep()
(ngủ trong nano giây). Bạn có thể muốn usleep()
, điều này sẽ cho phép bạn giải quyết những con số dễ dàng hơn. Giấc ngủ 1 mili giây (sử dụng từng giây):
use strict;
use warnings;
use Time::HiRes qw(usleep nanosleep);
# 1 millisecond == 1000 microseconds
usleep(1000);
# 1 microsecond == 1000 nanoseconds
nanosleep(1000000);
Nếu bạn không muốn (hoặc không thể) tải một mô-đun để thực hiện việc này, bạn cũng có thể sử dụng select()
chức năng tích hợp sẵn:
# Sleep for 250 milliseconds
select(undef, undef, undef, 0.25);
Thời gian :: HiRes:
use Time::HiRes;
Time::HiRes::sleep(0.1); #.1 seconds
Time::HiRes::usleep(1); # 1 microsecond.
Từ perlfaq8 :
Làm cách nào tôi có thể ngủ () hoặc báo thức () trong vòng chưa đầy một giây?
Nếu bạn muốn có độ chi tiết tốt hơn 1 giây mà hàm sleep () cung cấp, cách dễ nhất là sử dụng hàm select () như được ghi trong tài liệu select trong perlfunc. Hãy thử Thời gian :: HiRes và các mô-đun BSD :: Itimer (có sẵn từ CPAN và bắt đầu từ Perl 5.8 Time :: HiRes là một phần của phân phối chuẩn).
Một googling nhanh về "bộ định thời gian có độ phân giải cao perl" đã tham chiếu đến Time :: HiRes . Có lẽ đó là những gì bạn muốn.
system "sleep 0.1";
thực hiện thủ thuật.