2009-05-22 9 views
67

मैं पर्ल में एक दूसरे की तुलना में कम के लिए कैसे सो सकता हूँ?पर्ल में मिलीसेकंड के लिए मैं कैसे सो जाऊं?

+21

यह इसलिए क्योंकि मेरा मानना ​​है कि इस शीर्षक वास्तव में अधिक उपयोगी है। मुझे यह तर्क देने की कोशिश करें। बीडीएफ क्या शीर्षक में सवाल डुप्लिकेट किया गया था जो कोई व्यक्तित्व नहीं जोड़ता है। जब मैं उत्तर के लिए वेब खोज रहा था तो मैंने वास्तव में एक मिलीसेकंद नींद की तलाश की, न कि "एक सेकंड से छोटी" नींद के लिए। मैं कहता हूं कि इस संस्करण में बीडीएफ की तुलना में विभिन्न Google खोजों के माध्यम से हिट होने का बेहतर मौका है। कृपया मुझे सुधारें अगर मैं गलत हूं। –

उत्तर

97

perldoc पृष्ठ से sleep पर:

एक सेकंड से भी अधिक विस्तृत रूप से विलंब के लिए, Time::HiRes मॉड्यूल (CPAN से, और पर्ल से मानक वितरण का 5.8 हिस्सा शुरू) usleep प्रदान करता है()।

वास्तव में, यह usleep() (जो माइक्रोसेकंड में सोता है) और nanosleep() (जो नैनोसेकंड में सोता है) प्रदान करता है। आप usleep() चाहते हैं, जो आपको आसान संख्याओं से निपटने देना चाहिए। भी

use strict; 
use warnings; 

use Time::HiRes qw(usleep nanosleep); 

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

आप नहीं करना चाहते हैं (या नहीं कर सकते हैं) यह करने के लिए एक मॉड्यूल लोड हैं, तो आप कर सकते हैं में निर्मित select() समारोह का उपयोग कर सकेंगे: 1 मिलीसेकंड नींद (प्रत्येक का प्रयोग करके)

# Sleep for 250 milliseconds 
select(undef, undef, undef, 0.25); 
+5

चेतावनी: यद्यपि आप नैनोस्लीप सकता है (1), कई OSes कुछ न्यूनतम विवरण के स्तर को है, जैसे मेरा मानना ​​है कि यह विंडोज एक्सपी में 1 एमएस है, इसलिए आप अभी भी पूरे 1000000 एनएस के लिए सोएंगे। – Piskvor

+8

समय पर पेज :: काम देता तरह कुछ कहते हैं, "यदि आप (नैनोस्लीप हो) तो आपको पुनर्विचार करना चाहिए या नहीं, पर्ल अपनी नौकरी के लिए सबसे अच्छा उपकरण है।" –

+3

समय :: HiRes :: नींद (0.3) भी है जो एक सेकंड के .3 के लिए सो जाएगा। –

4

"पर्ल उच्च संकल्प टाइमर" पर एक त्वरित Googling Time::HiRes के लिए एक संदर्भ दे दी है। हो सकता है कि आप जो चाहते हैं।

12
perlfaq8 से

:


मैं कैसे एक दूसरे के नीचे के लिए() या अलार्म() सो सकते हैं?

यदि आप नींद() फ़ंक्शन प्रदान करते हुए 1 सेकंड की तुलना में बेहतर ग्रैन्युलरिटी चाहते हैं, तो सबसे आसान तरीका चयन() फ़ंक्शन का उपयोग करना है जैसा कि perlfunc में चयनित में प्रलेखित है। समय :: HiRes और बीएसडी :: इटिमर मॉड्यूल (सीपीएएन से उपलब्ध, और पर्ल 5.8 से शुरू होता है समय :: HiRes मानक वितरण का हिस्सा है) का प्रयास करें।

-3
system "sleep 0.1"; 

चाल है।

संबंधित मुद्दे