जबकि सच: अब = datetime.datetime.now (); अगर अब होलो; gt; = 22 और अब होर & lt; 3: प्रिंट "स्लीप" नींद_टाई = datetime.dat.Today (), datetime.time (3)) sleep_til = (नींद _आइट - अब)। सेकेंड स्लेप_ टाइम टाइम स्लीप (नींद _लि) प्रिंट "वेक" अन्य: प्रिंट "ब्रेक" ब्रेक
यह कोड मेरे पूरे प्रोग्राम को 10 बजे सो जाओ और 3 बजे तक जगाए। मेरा सवाल है .. क्या यह काम करेगा? मैं इसे चलाने की कोशिश की .. लेकिन मैं अपने सिस्टम / कंप्यूटर समय नहीं बदल सकता .. इसलिए मैं नहीं देख सकता मैं इस प्रश्न को पोस्ट कर रहा हूं, इसलिए कारण यह है कि मेरी कोडिंग datetime.date.tday और datetime.datetime का उपयोग कर रही है, जो वर्तमान तिथि को बुला रही है ..
एक बार फिर से .. मैं अपना कार्यक्रम 10 पीएम से पहले चलाना चाहता हूं 10pm से 3:00 के बीच और 3:00 के बाद फिर से चलाएं ..
क्या कोई यह जांच सकता है कि यह करने का सही तरीका है?
(स्पष्टता के लिए अतिरिक्त- verbose) पर विचार करें:
आयात समय , Datetime # समय सीमा बनाएं - कार्यक्रम को RUN_LB और RUN_UB RUN_LB = datetime.time (घंटे = 22) # 10pm RUN_UB = datetime.time (hour = 3) # 3am # के बीच चलाना चाहिए हेल्पर फ़ंक्शन यह निर्धारित करने के लिए कि हमें वर्तमान में चलना चाहिए Def should_run (): # वर्तमान समय प्राप्त करें ct = datetime.datetime.now ()। समय () # सीमा को चलाने के लिए वर्तमान समय की तुलना करें lbok = RUN_LB & lt; = ct ubok = RUN_UB & gt; = ct # यदि सीमाएं लपेटें 24 घंटे का दिन, एक अलग चेक तर्क का उपयोग करें यदि RUN_LB & gt; RUN_UB: रिटर्न lbok या ubok else: रिटर्न lbok और ubok # हेल्पर फ़ंक्शन, यह निर्धारित करने के लिए कि अब कितनी दूर RUN_LB def get_wait_secs () है: # वर्तमान डेटटाइम सीडी प्राप्त करें = datetime.datetime.now () # आज के * RUN_LB ld = datetime.datetime.combine (datetime.date.today (), RUN_LB) # आज तक के समय के लिए एक समयबद्धता बनाएं * आज के * RUN_LB टीडी = एलडी - सीडी # टीडी दिन (नकारात्मक हो सकता है), रिटर्न टीडी.सेकंड पर ध्यान न दें (हमेशा सकारात्मक) रिटर्न td.seconds जबकि True: if_run (): प्रिंट ("- कुछ करें -") और: wait_secs = get_wait_secs () प्रिंट ("% d सेकंड के लिए सो रही है ..."% wait_secs) समय .leep (wait_secs)
लेकिन मैं मानता हूं कि नींद आपके प्रोग्राम को शुरू करने में देरी का सबसे अच्छा तरीका नहीं है आप विंडोज पर कार्य शेड्यूलर या लिनक्स पर cron
पर गौर कर सकते हैं।
No comments:
Post a Comment