पायथन डेवलपर्स के रूप में, हम अक्सर इसे अनुकूलित करने की चिंता करने से पहले अपने कोड को काम पर लगाने पर ध्यान केंद्रित करते हैं। हालाँकि, जब बड़े पैमाने के अनुप्रयोगों या प्रदर्शन-महत्वपूर्ण कोड से निपटते हैं, तो अनुकूलन महत्वपूर्ण हो जाता है। इस पोस्ट में, हम दो शक्तिशाली टूल को कवर करेंगे जिनका उपयोग आप अपने पायथन कोड को अनुकूलित करने के लिए कर सकते हैं: cProfile मॉड्यूल और PyPy दुभाषिया।
इस पोस्ट के अंत तक, आप सीखेंगे:
पायथन अपने उपयोग में आसानी, पठनीयता और पुस्तकालयों के विशाल पारिस्थितिकी तंत्र के लिए जाना जाता है। लेकिन अपनी व्याख्यात्मक प्रकृति के कारण यह सी या जावा जैसी कुछ अन्य भाषाओं की तुलना में धीमी भी है। इसलिए, अपने पायथन कोड को अनुकूलित करने का तरीका जानना मशीन लर्निंग मॉडल, रीयल-टाइम सिस्टम या उच्च-आवृत्ति ट्रेडिंग सिस्टम जैसे प्रदर्शन-संवेदनशील अनुप्रयोगों में महत्वपूर्ण हो सकता है।
अनुकूलन आम तौर पर इन चरणों का पालन करता है:
अब, आपके कोड की प्रोफाइलिंग शुरू करते हैं।
cProfile प्रदर्शन प्रोफ़ाइलिंग के लिए एक अंतर्निहित पायथन मॉड्यूल है। यह ट्रैक करता है कि आपके कोड में प्रत्येक फ़ंक्शन को निष्पादित होने में कितना समय लगता है, जो आपको उन फ़ंक्शन या कोड के अनुभागों की पहचान करने में मदद कर सकता है जो मंदी का कारण बन रहे हैं।
किसी स्क्रिप्ट को प्रोफ़ाइल करने का सबसे सरल तरीका कमांड लाइन से cProfile चलाना है। उदाहरण के लिए, मान लें कि आपके पास my_script.py नामक एक स्क्रिप्ट है:
python -m cProfile -s cumulative my_script.py
स्पष्टीकरण:
इससे आपका कोड अपना समय कहां व्यतीत कर रहा है इसका एक विस्तृत विश्लेषण तैयार होगा।
आइए एक बुनियादी पायथन स्क्रिप्ट देखें जो फाइबोनैचि संख्याओं की पुनरावर्ती गणना करती है:
def fibonacci(n): if nइस स्क्रिप्ट को cProfile के साथ चला रहा हूं:
python -m cProfile -s cumulative fibonacci_script.pyसीप्रोफ़ाइल आउटपुट को समझना
एक बार जब आप cProfile चलाएंगे, तो आपको कुछ इस तरह दिखाई देगा:
ncalls tottime percall cumtime percall filename:lineno(function) 8320 0.050 0.000 0.124 0.000 fibonacci_script.py:3(fibonacci)प्रत्येक कॉलम मुख्य प्रदर्शन डेटा प्रदान करता है:
यदि आपके फाइबोनैचि फ़ंक्शन में बहुत अधिक समय लगता है, तो यह आउटपुट आपको दिखाएगा कि आपके अनुकूलन प्रयासों को कहां केंद्रित करना है।
यदि आप केवल विशिष्ट अनुभागों को प्रोफ़ाइल करना चाहते हैं तो आप अपने कोड के भीतर प्रोग्रामेटिक रूप से cProfile का भी उपयोग कर सकते हैं।
import cProfile def fibonacci(n): if nचरण 2: अपने पायथन कोड को अनुकूलित करना
एक बार जब आप cProfile का उपयोग करके अपने कोड में बाधाओं की पहचान कर लेते हैं, तो इसे अनुकूलित करने का समय आ गया है।
सामान्य पायथन अनुकूलन तकनीकें
- अंतर्निहित फ़ंक्शंस का उपयोग करें: सम(), न्यूनतम(), और अधिकतम() जैसे अंतर्निहित फ़ंक्शंस पायथन में अत्यधिक अनुकूलित हैं और आमतौर पर मैन्युअल रूप से कार्यान्वित लूप की तुलना में तेज़ होते हैं।
उदाहरण:
# Before: Custom sum loop total = 0 for i in range(1000000): total = i # After: Using built-in sum total = sum(range(1000000))
- अनावश्यक फ़ंक्शन कॉल से बचें: फ़ंक्शन कॉल में ओवरहेड होता है, विशेष रूप से लूप के अंदर। अनावश्यक कॉलों को कम करने का प्रयास करें।
उदाहरण:
# Before: Unnecessary repeated calculations for i in range(1000): print(len(my_list)) # len() is called 1000 times # After: Compute once and reuse list_len = len(my_list) for i in range(1000): print(list_len)
- मेमोइज़ेशन: पुनरावर्ती कार्यों के लिए, आप बार-बार काम से बचने के लिए महंगी गणनाओं के परिणामों को संग्रहीत करने के लिए मेमोइज़ेशन का उपयोग कर सकते हैं।
उदाहरण:
from functools import lru_cache @lru_cache(maxsize=None) def fibonacci(n): if nयह प्रत्येक पुनरावर्ती कॉल के परिणामों को संग्रहीत करके फाइबोनैचि गणना को बहुत तेज करता है।
चरण 3: जस्ट-इन-टाइम संकलन के लिए PyPy का उपयोग करना
PyPy क्या है?
PyPy एक वैकल्पिक पायथन दुभाषिया है जो आपके पायथन कोड को तेज करने के लिए जस्ट-इन-टाइम (JIT) संकलन का उपयोग करता है। PyPy अक्सर निष्पादित कोड पथों को मशीन कोड में संकलित करता है, जिससे यह कुछ कार्यों के लिए मानक CPython दुभाषिया की तुलना में बहुत तेज़ हो जाता है।
पीपीपी स्थापित करना
आप लिनक्स पर एपीटी या मैकओएस पर ब्रू जैसे पैकेज मैनेजर का उपयोग करके PyPy इंस्टॉल कर सकते हैं:
# On Ubuntu sudo apt-get install pypy3 # On macOS (using Homebrew) brew install pypy3PyPy के साथ Python कोड चलाना
एक बार PyPy स्थापित हो जाने पर, आप CPython के बजाय इसके साथ अपनी स्क्रिप्ट चला सकते हैं:
pypy3 my_script.pyPyPy का उपयोग क्यों करें?
अब, आइए अपने पायथन कोड को पूरी तरह से अनुकूलित करने के लिए इन उपकरणों को संयोजित करें।
आइए हमारे फाइबोनैचि उदाहरण पर दोबारा गौर करें और सब कुछ एक साथ रखें।
from functools import lru_cache @lru_cache(maxsize=None) def fibonacci(n): if nमेमोइज़ेशन के साथ कोड को अनुकूलित करने के बाद, आगे के प्रदर्शन में सुधार के लिए इसे PyPy का उपयोग करके चलाएं:
pypy3 fibonacci_script.pyनिष्कर्ष
cProfile और PyPy का लाभ उठाकर, आप अपने Python कोड को काफी हद तक अनुकूलित कर सकते हैं। अपने कोड में प्रदर्शन संबंधी बाधाओं को पहचानने और उनका समाधान करने के लिए cProfile का उपयोग करें। फिर, JIT संकलन के माध्यम से अपने प्रोग्राम की निष्पादन गति को और बढ़ाने के लिए PyPy का उपयोग करें।
सारांश:
- प्रदर्शन बाधाओं को समझने के लिए अपने कोड को cProfile के साथ प्रोफाइल करें।
- पायथन अनुकूलन तकनीकों को लागू करें, जैसे बिल्ट-इन और मेमोइज़ेशन का उपयोग करना।
- और भी बेहतर प्रदर्शन प्राप्त करने के लिए PyPy पर अनुकूलित कोड चलाएँ।
इस दृष्टिकोण के साथ, आप अपने पायथन प्रोग्राम को तेजी से और अधिक कुशलता से चला सकते हैं, खासकर सीपीयू-बाउंड कार्यों के लिए।
मुझसे जुड़ें:
जीथब
लिंक्डइन
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3