1. Learn
  2. /
  3. कोर्स
  4. /
  5. Efficient Python Code लिखना

Connected

अभ्यास

%lprun का उपयोग: bottleneck ठीक करें

पिछले अभ्यास में, आपने convert_units() फंक्शन को प्रोफाइल किया था और देखा था कि new_hts वाली list comprehension संभावित bottleneck हो सकती है. क्या आपने नोट किया कि new_wts वाली list comprehension ने भी runtime का लगभग उतना ही प्रतिशत लिया? यह संकेत देता है कि आपको new_hts और new_wts ऑब्जेक्ट्स किसी और तकनीक से बनाने चाहिए.

क्योंकि हर हीरो की height और weight एक numpy array में स्टोर है, आप heights और weights को बदलने के लिए list comprehension के बजाय array broadcasting का उपयोग कर सकते हैं. इसे नीचे दिए गए फंक्शन में लागू किया गया है:

def convert_units_broadcast(heroes, heights, weights):

    # Array broadcasting instead of list comprehension
    new_hts = heights * 0.39370
    new_wts = weights * 2.20462

    hero_data = {}

    for i,hero in enumerate(heroes):
        hero_data[hero] = (new_hts[i], new_wts[i])

    return hero_data

अपने IPython सेशन में line_profiler पैकेज लोड कीजिए. फिर, अपने superheroes डेटा पर काम करते हुए convert_units_broadcast() फंक्शन को प्रोफाइल करने के लिए %lprun का उपयोग कीजिए. convert_units_broadcast() फंक्शन, heroes लिस्ट, hts array, और wts array आपके सेशन में लोड हैं. कोडिंग पूरी करने के बाद, निम्न प्रश्न का उत्तर दें:

convert_units_broadcast() फंक्शन में कुल समय के सापेक्ष new_hts array broadcasting वाली कोड लाइन पर कितना प्रतिशत समय खर्च होता है?

निर्देश

50 XP

संभावित उत्तर