Làm cách nào để ngủ ngắn hơn một giây trong Perl?Làm cách nào để tôi ngủ được một phần nghìn giây trong Perl?
Trả lời
Từ trang perldoc trên sleep:
Đối với sự chậm trễ của granularity mịn hơn một giây, module Time::HiRes (từ CPAN, và bắt đầu từ Perl 5,8 phần của phân phối chuẩn) cung cấp usleep().
Thực ra, nó cung cấp usleep()
(trong đó ngủ bằng 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 xử lý các con số dễ dàng hơn. 1 mili giây giấc ngủ (sử dụng mỗi):
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 để làm điều này, bạn có thể cũng có thể sử dụng được xây dựng trong select()
chức năng:
# Sleep for 250 milliseconds
select(undef, undef, undef, 0.25);
Caveat: mặc dù bạn có thể nanosleep (1), nhiều hệ điều hành có một số chi tiết tối thiểu; ví dụ. Tôi tin rằng nó là 1 ms trong Windows XP, vì vậy bạn vẫn sẽ ngủ cho 1000000 ns ở đó. – Piskvor
Trang trên Thời gian :: HiRes nói điều gì đó như "nếu bạn cần nanosleep(), bạn nên cân nhắc xem Perl có phải là công cụ tốt nhất cho công việc của bạn hay không". –
Ngoài ra còn có Time :: HiRes :: sleep (0.3) sẽ ngủ trong .3 giây. –
Time :: thuê:
use Time::HiRes;
Time::HiRes::sleep(0.1); #.1 seconds
Time::HiRes::usleep(1); # 1 microsecond.
một lousy 34 giây :) – TML
Sử dụng Time::HiRes.
Googling nhanh trên "bộ hẹn giờ có độ phân giải cao perl" đã tham chiếu đến Time::HiRes. Có thể đó là những gì bạn muốn.
Từ perlfaq8:
Làm thế nào tôi có thể ngủ() hoặc báo động() với giá dưới một giây?
Nếu bạn muốn độ chi tiết mịn 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 lựa chọn trong perlfunc. Hãy thử Time :: HiRes và BSD :: Mô-đun Itimer (có sẵn từ CPAN, và bắt đầu từ thời gian Perl 5.8 :: HiRes là một phần của bản phân phối chuẩn).
system "sleep 0.1";
thực hiện thủ thuật.
Đó là vì tôi tin tiêu đề này thực sự hữu ích hơn. Hãy để tôi cố gắng tranh luận về điều này. B.D.F. đã làm trùng lặp câu hỏi trong tiêu đề không thêm tính biểu cảm nào. Khi tôi tìm kiếm câu trả lời trên web, tôi thực sự đã tìm kiếm một phần nghìn giây ngủ và không phải là giấc ngủ ngắn hơn một giây. Tôi nói phiên bản này có một cơ hội tốt hơn để được thông qua các tìm kiếm google khác nhau hơn của B.D.F. Nêu tôi sai vui long chân chỉnh tôi. –