प्रस्तावना
सुनिश्चित करें कि आपको वास्तव में अपने कार्य को बार-बार चलाने की आवश्यकता है। इसे व्यस्त प्रतीक्षा कहा जाता है और लगभग हमेशा उप-मध्य में रखा जाता है। यदि आपका कार्य किसी उपप्रकार के उत्पादन के लिए जाँच कर रहा है, तो आप subprocess.wait()
इसे समाप्त करने के लिए कर सकते हैं , उदाहरण के लिए। यदि आपका कार्य फाइलसिस्टम में किसी फ़ाइल या निर्देशिका के स्पर्श का इंतजार करना है, तो आप कर्नेल द्वारा संभाले गए फाइलसिस्टम इवेंट से अपने कोड को ट्रिगर करने के लिए pyinotify का उपयोग कर सकते हैं ।
उत्तर
यह है कि आप बहुत अधिक सीपीयू का उपभोग किए बिना व्यस्त प्रतीक्षा के लिए अनंत लूप लिखते हैं।
अजगर 2:
from __future__ import print_function
from __future__ import division
import time
while True:
range(10000) # some payload code
print("Me again") # some console logging
time.sleep(0.2) # sane sleep time of 0.1 seconds
अजगर 3:
import time
while True:
range(10000) # some payload code
print("Me again") # some console logging
time.sleep(0.2) # sane sleep time of 0.1 seconds
मूल्यांकन
जैसा कि @gnibbler ने एक अन्य उत्तर में परीक्षण किया है , प्रस्तुत कोड को हाल की मशीनों पर 1% से अधिक सीपीयू का उपभोग नहीं करना चाहिए। यदि यह अभी भी आपके पेलोड कोड के साथ बहुत अधिक सीपीयू का उपभोग करता है, तो आगे भी सोने के लिए समय बढ़ाने पर विचार करें। दूसरी ओर, बार-बार निष्पादन के लिए पेलोड कोड को अनुकूलित करने की आवश्यकता हो सकती है। उदाहरण के लिए, कैशिंग अपरिवर्तित डेटा पर चलने में तेजी ला सकता है।
क्रेडिट
यह उत्तर @ user2301728 के उत्तर को बनाने की कोशिश करता है ।