अजगर अनुप्रयोगों की रूपरेखा

प्रोफाइल और लिंक पर संक्षिप्त उदाहरण के साथ संक्षिप्त विवरण:
  1. प्रदर्शन: हॉटशॉट या अजगर प्रोफाइल / cProfile + kcachegrind लॉग विज़ुअलाइज़र ( विंडोज़ के लिए एक पोर्ट है , WinCacheGrind का एक एनालॉग)
  2. स्मृति उपयोग: वेब-आधारित डॉजर


उत्पादकता


  1. आँकड़े प्रोफाइलर विकल्प एकत्र करें:

    • उदाहरण 1 एक त्वरित हॉटशॉट का उपयोग करके (जो पदावनत हो सकता है):
       import hotshot prof = hotshot.Profile("your_project.prof") prof.start() # your code goes here prof.stop() prof.close() 

      kcachegrind- कन्वर्टर्स पैकेज से उपयोगिता का उपयोग करके लॉग प्रारूप में परिवर्तित करें :
       hotshot2calltree your_project.prof > your_project.out 

    • उदाहरण 2 मानक प्रोफाइल / cProfile का उपयोग करते हुए:
       python -m cProfile -o your_project.pyprof your_project.py 

      pyprof2calltree का उपयोग करके लॉग प्रारूप में परिवर्तित करें:
       pyprof2calltree -i your_project.pyprof -o your_project.out 

      (-k विकल्प के साथ, यह तुरंत kcachegrind शुरू कर देगा और एक मध्यवर्ती फ़ाइल बनाने की कोई आवश्यकता नहीं है)


  2. kcachegrind विज़ुअलाइज़र में लॉग खोलें और अध्ययन करें


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



स्मृति


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

मेरी पसंद अब एक डॉवर है , जो चेरीपी पर एक इंटरफेस के साथ एक एप्लिकेशन है। उसके साथ सब कुछ सरल है, हालांकि इतना लचीला नहीं है:

  1. एक नियंत्रक बनाएं, अनिवार्य रूप से एक चेरी 3 एप्लिकेशन:
     # memdebug.py import cherrypy import dowser def start(port): cherrypy.tree.mount(dowser.Root()) cherrypy.config.update({ 'environment': 'embedded', 'server.socket_port': port }) cherrypy.engine.start() 

  2. अपने एप्लिकेशन से कनेक्ट करें:
     import memdebug memdebug.start(8080) # your code goes here 

  3. ब्राउज़र पर जाएं और आंकड़े देखें (चेरीपी की वस्तुओं को अनदेखा करें, अन्य पुस्तकालय - हम केवल हमारी तलाश कर रहे हैं)
      http://localhost:8080/ 




    कार्यक्षमता तपस्वी है, आपको इसे क्लिक करना होगा और इसे थोड़ा समझाना होगा, लेकिन यह समस्याओं को खोजने के लिए पर्याप्त है। डिबगर API को सीखने और याद रखने की कोई आवश्यकता नहीं है। ध्यान दें, "पूरे पेड़ को दिखाएँ" जैसे कुछ कार्यों पर, बड़े अनुप्रयोगों के लिए गैर-विशाल मात्रा में मेमोरी की आवश्यकता हो सकती है।
  4. एप्लिकेशन स्वयं बंद नहीं होगा। सीखने के बाद, Ctrl + Z को बाधित करें और मार डालें

प्रोफाइलिंग के तरीके और उपकरण अभी भी जानने लायक हैं?

Source: https://habr.com/ru/post/In110537/


All Articles