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

पायथन कोड के लिए अनुकूलन युक्तियाँ?

हालांकि हम सभी जानते हैं कि अजगर अन्य अनुपालन वाली भाषाओं की तरह तेज या कुशल नहीं है। हालाँकि, कई बड़ी कंपनियाँ हैं जो हमें दिखाती हैं कि पायथन कोड बहुत बड़े कार्यभार को संभाल सकता है जो दर्शाता है कि यह इतना धीमा नहीं है। इस खंड में, हम कुछ युक्तियों को देखने जा रहे हैं जिन्हें ध्यान में रखना चाहिए ताकि एक सही पायथन प्रोग्राम और भी तेज़ और अधिक कुशल हो सके।

युक्ति 1:अंतर्निहित कार्यों के लिए जाएं

हालाँकि हम अजगर में कुशल कोड लिख सकते हैं, लेकिन बिल्ट-इन फ़ंक्शंस (जो C में लिखे गए हैं) को हरा पाना बहुत कठिन है। नीचे दी गई छवि अजगर में निर्मित कार्यों की सूची दिखाती है

पायथन कोड के लिए अनुकूलन युक्तियाँ?

टिप 2:वेरिएबल को स्वैप करने के लिए पाइथॉन मल्टीपल असाइनमेंट का उपयोग करें

>>> #Instead of using
>>> x, y = y, x
>>> #Use this - which is much faster
>>> temp = x
>>> x = y
>>> y = temp

टिप 3:वैश्विक चर से बचें और यदि संभव हो तो स्थानीय चर का उपयोग करें

वैश्विक चर प्राप्त करने की तुलना में स्थानीय चर प्राप्त करते समय पायथन तेज़ होता है। यानी हो सके तो ग्लोबल वेरिएबल से बचें।

टिप 4:जहां भी संभव हो "इन" का उपयोग करें

सामान्य तौर पर सदस्यता की जांच करने के लिए, "इन" कीवर्ड का उपयोग करें। यह साफ और तेज है।

for key in sequence:
   print ("Hello ", key)

टिप 5:अनंत लूप के लिए "जबकि 1" का उपयोग करें

ऐसे समय होते हैं जब हमें अपने प्रोग्राम में अनंत लूप चलाना पड़ता है (उदाहरण के लिए, एक सुनने वाला सॉकेट)। भले ही "जबकि ट्रू" एक ही ऑपरेशन करेगा, "जबकि 1" सिंगल जंप ऑपरेशन है।

>>> while 1:
   # do something, faster with while 1
>>> while True:
   #do something, perform same operation but slower than then previous one

युक्ति 6:सूची समझ का उपयोग करें

हम कई "के लिए" और "जबकि" ब्लॉक को बदलने के लिए पायथन 2.0 से सूची समझ का उपयोग कर सकते हैं। सूची की समझ बहुत तेज है क्योंकि यह लूपिंग के दौरान एक पूर्वानुमेय पैटर्न को खोजने के लिए पायथन दुभाषिया के लिए अनुकूलित है। यह अधिक पठनीय है और ज्यादातर मामलों में यह गिनती के लिए एक अतिरिक्त चर बचाता है।

उदाहरण के लिए एक पंक्ति से 1 से 25 के बीच सम संख्या ज्ञात करने के लिए:

>>> #Using list comprehension - good way
>>> print([i for i in range (25) if i%2 == 0])
[0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24]
>>> # Another way - not so efficient way
i = 0
evens = []

while i< 25:
   if i%2 == 0:
      evens.append(i)
   i += 1

print(evens)

[0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24]

टिप 7:मांग पर मूल्य प्राप्त करने के लिए पायथन जनरेटर का उपयोग करें

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

>>> chunkBytes = (1000 * i for i in range(1000))
>>> next(chunkBytes)
0
>>> next(chunkBytes)
1000
>>> next(chunkBytes)
2000
>>> next(chunkBytes)
3000
>>>

टिप 8:itertools मॉड्यूल का उपयोग

itertools मॉड्यूल पुनरावृत्ति और संयोजन के लिए बहुत उपयोगी और कुशल है।

पायथन कोड की कुछ पंक्तियों में [1, 2, 3, 4, 5] सूची के लिए सभी क्रमपरिवर्तन उत्पन्न करने के लिए

>>> import itertools
>>> iter1 = itertools.permutations([1, 2, 3,4])
>>> list(iter1)
[(1, 2, 3, 4), (1, 2, 4, 3), (1, 3, 2, 4), (1, 3, 4, 2), (1, 4, 2, 3), (1, 4, 3, 2), (2, 1, 3, 4), (2, 1, 4, 3), (2, 3, 1, 4), (2, 3, 4, 1), (2, 4, 1, 3), (2, 4, 3, 1), (3, 1, 2, 4), (3, 1, 4, 2), (3, 2, 1, 4), (3, 2, 4, 1), (3, 4, 1, 2), (3, 4, 2, 1), (4, 1, 2, 3), (4, 1, 3, 2), (4, 2, 1, 3), (4, 2, 3, 1), (4, 3, 1, 2), (4, 3, 2, 1)]

टिप 9:सूची को क्रमबद्ध क्रम में रखने के लिए द्विभाजित मॉड्यूल का उपयोग

यह एक मुफ़्त बाइनरी खोज कार्यान्वयन है और क्रमबद्ध अनुक्रम के लिए एक तेज़ प्रविष्टि उपकरण है।

>>> import bisect
>>> bisect.insort(list, element)

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

टिप 10:शब्दकोश का उपयोग और परीक्षण सदस्यता के लिए सेट

शब्दकोश और सेट के रूप में हैश तालिका का उपयोग करके कार्यान्वित किया जाता है, यह जांच कर रहा है कि कोई तत्व किसी शब्दकोश में मौजूद है या सेट पाइथन में बहुत तेज़ है। कभी-कभी लुकअप O(1) जितना तेज़ होता है।

>>> lst = ['a', 'ab', 'abc'] #Slow - Checking membership with list
>>> 'abc' in lst
True
>>> mySet = set(['a', 'ab', 'abc'])# Fast - checking membership with set or dictionary
>>> 'abc' in mySet
True

टिप 11:पाइथॉन डेकोरेटर के साथ कैश परिणाम

पायथन डेकोरेटर प्रतीक "@" है। हम न केवल ट्रेसिंग, लॉकिंग या लॉगिंग के लिए पायथन डेकोरेटर का उपयोग कर सकते हैं, हम इसका उपयोग पायथन फ़ंक्शन को सजाने के लिए कर सकते हैं ताकि यह बाद में आवश्यक परिणामों (याद रखने) को याद रखे।

>>> from functools import wraps
>>> def memo(f):
   cache = {}
   @wraps(f)
   def wrap(*arg):
      if arg not in cache:
         cache['arg'] = f(*arg)
      return cache['arg']
   return wrap

और हम इस डेकोरेटर का उपयोग फिबोनाची फ़ंक्शन पर कर सकते हैं

>>> @memo
def fib(i):
   if i<2:
      return 1
   return fib(i-1) + fib(i-2)

मूल विचार यह है कि आपके द्वारा परिकलित प्रत्येक फाइबोनैचि शब्द को याद रखने के लिए अपने फ़ंक्शन को बढ़ाना (सजाना) है, यदि वे कैश में हैं, तो इसे फिर से गणना करने की कोई आवश्यकता नहीं है।


  1. हीप सॉर्ट के लिए पायथन प्रोग्राम

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

  1. वर्डप्रेस के लिए इमेज ऑप्टिमाइजेशन टिप्स

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

  1. 5 सर्वश्रेष्ठ ऐप स्टोर अनुकूलन (ASO) विपणक के लिए सुझाव

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