पायथन में टाइमआउट के साथ एक फ़ंक्शन को बाधित करना
ऐसे फ़ंक्शन को कॉल करना जो अनिश्चित काल के लिए रुक सकता है, स्क्रिप्ट को आगे निष्पादित होने से रोकता है, यह आवश्यक हो जाता है कि एक टाइमआउट तंत्र लागू करें। पायथन का signal पैकेज इस समस्या का समाधान प्रदान करता है।
signal पैकेज, जो मुख्य रूप से UNIX सिस्टम में उपयोग किया जाता है, आपको एक विशिष्ट फ़ंक्शन के लिए टाइमआउट सेट करने की अनुमति देता है। यदि फ़ंक्शन निर्दिष्ट टाइमआउट से अधिक हो जाता है, तो निष्पादन को बाधित करने के लिए एक सिग्नल उठाया जाता है।
उदाहरण:
एक फ़ंक्शन लूप_फॉरएवर() पर विचार करें जो अनिश्चित काल तक चल सकता है। हमें इस फ़ंक्शन को कॉल करने की आवश्यकता है लेकिन 5 सेकंड का टाइमआउट सेट करें। यदि फ़ंक्शन में 5 सेकंड से अधिक समय लगता है, तो हम इसके निष्पादन को रद्द करना चाहते हैं।
import signal # Register a handler for the timeout def handler(signum, frame): print("Timeout! Cancelling function execution.") raise Exception("Timeout exceeded!") # Register the signal function handler signal.signal(signal.SIGALRM, handler) # Define a timeout of 5 seconds signal.alarm(5) try: loop_forever() except Exception as e: print(str(e)) # Cancel the timer if the function finishes before timeout signal.alarm(0)
इस उदाहरण में, 5 सेकंड के बाद, एक अपवाद उठाते हुए हैंडलर फ़ंक्शन को कॉल किया जाता है। यह अपवाद मूल कोड में पकड़ा गया है, जो फिर टाइमर को रद्द कर देता है और लूप_फॉरएवर() फ़ंक्शन के निष्पादन को समाप्त कर देता है।
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3