Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> Python

पायथन प्रोग्राम एग्जिट हैंडलर्स (एटेक्सिट)

पायथन के मानक वितरण में atexit मॉड्यूल के दो कार्य हैं - रजिस्टर () और अपंजीकृत ()। दोनों फ़ंक्शन कुछ मौजूदा फ़ंक्शन को तर्क के रूप में लेते हैं। जब दुभाषिया सत्र सामान्य रूप से समाप्त हो जाता है तो पंजीकृत कार्य स्वचालित रूप से निष्पादित होते हैं।

यदि एक से अधिक कार्य पंजीकृत हैं, तो उनका निष्पादन पंजीकरण के विपरीत क्रम में होता है। इसका मतलब है कि f1 (), f2 () और f3 () एक के बाद एक पंजीकृत हैं, उनके निष्पादन का क्रम f3 (), f2 () और f1 () होगा।

अपंजीकृत () फ़ंक्शन निर्दिष्ट फ़ंक्शन को स्वचालित रूप से लागू किए जाने वाले कार्यों की सूची से हटा देता है।

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

import atexit
sum = 0
def savetotal():
fo = open("atexit.txt","w")
fo.write(str(sum))
print ("sum written to file")
fo.close()
atexit.register(savetotal)
while True:
n = int(input("enter a number. -1 to exit"))
if n == -1:
break
sum = sum + n
print (sum)

उपरोक्त कोड को atexit-example.py के रूप में सहेजें और कमांड लाइन से चलाएं। लगातार संख्या इनपुट जोड़े जाते हैं और कुल अंत में atexit.txt को लिखा जाता है।

C:\python36>python atexit-example.py
enter a number. -1 to exit4
enter a number. -1 to exit6
enter a number. -1 to exit3
enter a number. -1 to exit5
enter a number. -1 to exit2
enter a number. -1 to exit-1
20
sum written to file

atexit.txt फ़ाइल वर्तमान निर्देशिका में बनाई जाएगी और यह कुल (इस मामले में 20) संग्रहीत करेगी।

विभिन्न तर्कों के साथ एक फ़ंक्शन को पंजीकृत करना भी संभव है। उस स्थिति में, प्रत्येक तर्क के साथ कार्य स्वतंत्र रूप से पंजीकृत किया जाएगा और पंजीकरण के विपरीत क्रम में निष्पादित किया जाएगा।

import atexit
names = ['Ashok', 'Radha', 'Abdul', 'John']
def hello(name):
print ("Hello",name)
for name in names:
atexit.register(hello,name)

आउटपुट

C:\python36>python atexit-example2.py
Hello John
Hello Abdul
Hello Radha
Hello Ashok

atexit.unregister(hello) hello() की सभी प्रतियों को कार्यों की सूची से विभिन्न मापदंडों के साथ हटा देगा।

डेकोरेटर सिंटैक्स

किसी फ़ंक्शन को पंजीकृत करने का एक सुविधाजनक विकल्प एक डेकोरेटर के रूप में रजिस्टर () फ़ंक्शन का उपयोग करना है।

import atexit
@atexit.register
def hello():
print('Hello World!')
print('Say Hello')

आउटपुट

C:\python36>python atexit-example3.py
Say Hello
Hello World!

यदि प्रोग्राम अचानक समाप्त हो जाता है या os.exit() फ़ंक्शन को कॉल किया जाता है, तो पंजीकृत फ़ंक्शन स्वचालित रूप से लागू नहीं होंगे।

एटेक्सिट मॉड्यूल स्वचालित रूप से स्वच्छ संचालन जैसे डेटाबेस और फाइलों को बंद करने, संसाधनों को मुक्त करने आदि में उपयोगी है।


  1. QuickSort के लिए पायथन प्रोग्राम

    इस लेख में, हम नीचे दिए गए समस्या कथन के समाधान के बारे में जानेंगे। समस्या कथन - हमें एक सरणी दी गई है, हमें इसे क्विकॉर्ट की अवधारणा का उपयोग करके क्रमबद्ध करने की आवश्यकता है यहां हम पहले सरणी को विभाजित करते हैं और क्रमबद्ध सरणी प्राप्त करने के लिए अलग विभाजन को सॉर्ट करते हैं। आइए अब नीचे दि

  1. पायथन कार्यक्रम में साधारण रुचि

    इस लेख में, हम Python 3.x में साधारण ब्याज की गणना के बारे में जानेंगे। या पहले। साधारण रुचि भुगतानों के बीच बीते दिनों की संख्या से दैनिक ब्याज दर को मूल राशि से गुणा करके गणना की जाती है। गणितीय रूप से, साधारण ब्याज =(पी एक्स टी एक्स आर)/100 कहां, पी मूल राशि है T समय है और आर दर है उदाहर

  1. पायथन प्रोग्राम में सिलेक्शन सॉर्ट

    इस लेख में, हम Python 3.x में सिलेक्शन सॉर्ट और उसके कार्यान्वयन के बारे में जानेंगे। या पहले। चयन क्रम . में एल्गोरिथम, एक सरणी को पुनरावर्ती रूप से अनसोल्ड भाग से न्यूनतम तत्व ढूंढकर और शुरुआत में सम्मिलित करके सॉर्ट किया जाता है। किसी दिए गए सरणी पर चयन क्रम के निष्पादन के दौरान दो उप-सरणी बनते