क्या पायथन के लिए एक दृश्य प्रोफाइलर है? [बन्द है]


99

मैं अभी cProfile का उपयोग करता हूं लेकिन मुझे आँकड़े डेटा को क्वेरी करने के लिए pstats कोड लिखना कठिन लगता है।

मैं एक दृश्य उपकरण की तलाश कर रहा हूं जो मुझे दिखाता है कि सीपीयू समय और मेमोरी आवंटन के संदर्भ में मेरा पायथन कोड क्या कर रहा है।

जावा दुनिया से कुछ उदाहरण हैं VisualVM और JProfiler

  • क्या ऐसा कुछ मौजूद है?
  • क्या कोई आईडीई है जो ऐसा करता है?
  • चाहेंगे dtrace मदद करता है?

मैं लिनक्स के लिए KCachegrind के बारे में जानता हूं , लेकिन मैं कुछ ऐसा पसंद करूंगा जिसे मैं केडीई स्थापित किए बिना विंडोज / मैक पर चला सकता हूं।


5
यदि इस तरह का कोई कार्यक्रम अभी तक मौजूद नहीं है, तो यह एक बेहतरीन ओपन सोर्स प्रोजेक्ट होगा।
कार्ल जूल

@cvondrick इस तरह का एक कार्यक्रम मौजूद है, और पहले ही उल्लेख किया गया था: KCachegrind।
डेविन जीनपिएरे

1
@ डिविज़न, हाँ, लेकिन सवाल देखें। :-)
जुलाब

क्या आप इस तकनीक से अवगत हैं: stackoverflow.com/questions/375913/… यह दृश्य नहीं है, लेकिन न तो यह थकाऊ है, और यह प्रभावशीलता के लिए हरा मुश्किल है।
माइक डनलैवी

4
@ केचगग्रिंड प्रेमी: केडीई स्थापित न करने का कोई भी कारण केचग्रेंड का उपयोग न करने का एक अच्छा कारण है।
मैट जॉइनर

जवाबों:


86

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

संपादित करें: स्नेकविज़ अजगर 2 और 3 का समर्थन करता है और सभी प्रमुख प्रणालियों पर काम करता है।


41

मैं केवल RunSnakeRun से वाकिफ हूं

PyDev (ग्रहण) में एक एकीकृत प्रोफाइलर के बारे में कुछ समय पहले भी कुछ बात हुई थी, लेकिन मुझे नहीं पता कि क्या वह कभी दिन का प्रकाश देख पाएगा।

अद्यतन: दुर्भाग्य से ऐसा लगता है कि RunSnakeRun अब बनाए नहीं रखा गया है, और यह पायथन 3 का समर्थन नहीं करता है।


RunSnakeRun के लिए +1। सबसे अच्छा उपकरण IMHO।
कोडपे

4
RunSnakeRun अच्छा है, लेकिन दुर्भाग्य से यह वर्तमान में पायथन 3 में काम नहीं करता है (जून 2014 के लिए सच है।)
राम रचम

@ राम: जानकारी के लिए धन्यवाद, यह दुर्भाग्यपूर्ण है :-(।
nikow

1
मैंने इसके बजाय pyinstrument का उपयोग किया है। यह एक अलग जानवर है, लेकिन यह उपयोगी है।
राम रचम

मुझे RunSnakeRun पसंद है, लेकिन मैं दृढ़ता से नापसंद करता हूं कि यह कॉलर्स और कैले को कैसे प्रदर्शित करता है। RunSnakeRun प्रत्येक कॉलर / कैलली के लिए कॉल काउंट, स्थानीय समय और संचयी समय के लिए "कुल" मान दिखाएगा। तो, आपके पास एक फ़ंक्शन जैसी चीजें हो सकती हैं, जिसमें 5 सेकंड का संचयी समय होता है, लेकिन एक ऐसा कैलेंडर जिसमें 100 सेकंड का संचयी समय होता है। नहीं कि सहज ज्ञान युक्त, और क्या pstats प्रदान करता है के रूप में उपयोगी नहीं है। pstats कॉलर / कैलली के आँकड़ों के लिए अधिक सार्थक संख्या देने के लिए प्रश्न में फ़ंक्शन से संबंधित प्रासंगिक जानकारी का उपयोग करता है। एक और दर्शक के बारे में पता नहीं है जो इसे आसानी से देखने योग्य बनाता है।
वुल्टेयर

14

मैं gprof2dot.py का उपयोग करता हूं। परिणाम इस तरह दिखता है । मैं उन आदेशों का उपयोग करता हूं:

  python -m cProfile -o profile.dat my_program.py
  gprof2dot.py -f pstats profile.dat | dot -Tpng -o profile.png

आप की जरूरत Graphviz और gprof2dot.py स्थापित। आपको एक सुविधा शेल स्क्रिप्ट पसंद आ सकती है ।


यदि आप png (dot -Tsvg -o profile.svg के साथ) के बजाय svg आउटपुट करते हैं, तो आप अपने ब्राउज़र के साथ आउटपुट ग्राफ को खोज सकेंगे, और आप बिना jaggies के छवि को स्केल कर पाएंगे।
razeh


5

विज़ुअल स्टूडियो के लिए पायथन टूल्स में बहुत अच्छी तरह से चित्रमय प्रोफाइलर शामिल हैं: http://www.youtube.com/watch?v=VCx7rlPyEzE&hd=1

http://pytools.codeplex.com/


1
हाँ, मैं अपने .Net सामान के लिए इस प्रोफाइलर का उपयोग करता हूँ। यह सिर्फ इस बात पर प्रकाश डालता है कि कितना लाभकारी cprofile है ...
बेसिक

4

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


1
यह बहुत अच्छा है, लेकिन जाहिर है केवल C / C ++ के लिए। हालांकि यह अजगर का उपयोग करता है।
रोरी

4

KCacheGrind में QCacheGrind नामक एक संस्करण शामिल है जो Mac OS X और Windows पर चलता है ।


इसके अलावा ओपी लिनक्स पर KCachegrind के लिए निर्भरता की गलत व्याख्या करता है। डेबियन / उबंटू / टकसाल पर आपको apt-get install kcachegrindकेवल 3 केडीई-संबंधित लाइब्रेरी स्थापित करने की आवश्यकता होती है ।
साज सिप

2
@ उबंटू 17.04 इंस्टॉलेशन पर, apt install kcachegrind~ 40 केडीई लाइब्रेरी सहित 102 पैकेज स्थापित करना चाहता है।
मार्क ई। हासे

@mehaase ताजा पर ubuntu:xenialयह कई बार तीन गुना हो सकता है, लेकिन यह विकास के माहौल के लिए है और मैं इसे मुश्किल से एक मुद्दे के रूप में देखता हूं। और वास्तव में apt-cache depends --recurse --no-recommends --no-suggests --no-conflicts --no-breaks --no-replaces --no-enhances --no-pre-depends kcachegrind | grep kde | grep Depends | sort -u | wc -lसिर्फ 13.
साज़

3

स्नेकविज़ को आज़माएं। स्थापित करने के लिए बहुत आसान (पाइप के माध्यम से) और यह ब्राउज़र आधारित है।

https://jiffyclub.github.io/snakeviz/


2

अजगर कॉल ग्राफ़ अधिकतम जवाब में उन लोगों के समान तस्वीरें उत्पन्न करता है । यह प्रत्येक फ़ंक्शन के लिए कुल समय भी दिखाता है, किसी कारण से यह उदाहरण ग्राफ़ में परिलक्षित नहीं होता है।


1

मैं एक ब्राउज़र आधारित दृश्य उपकरण, लिखा है profile_eye , जिनमें से उत्पादन पर चल रही है gprof2dot

gprof2dot कई प्रोफाइलिंग-टूल आउटपुट को ग्रैक करने में बहुत अच्छा है, और ग्राफ-एलिमेंट प्लेसमेंट में बहुत अच्छा काम करता है। अंतिम प्रतिपादन एक स्थिर ग्राफिक है, जो अक्सर बहुत अव्यवस्थित होता है।

D3.js का उपयोग करना अव्यवस्थित तत्वों, टूलटिप्स और एक फिशिए विरूपण के सापेक्ष लुप्त होने के माध्यम से, उस अव्यवस्था को दूर करना संभव है

तुलना के लिए, देखें g_2e द्वारा उपयोग किए जाने वाले विहित उदाहरण के प्रोफाइल_पे का दृश्य । विशेष रूप से पायथन के लिए, एक cProfile आउटपुट उदाहरण देखें


1

पाइफ्लेम + फ्लेमग्राफ पर विचार करें

पाइफ्लेम: पाइथन + फ्लेमग्राफ के लिए एक Ptracing Profiler

https://github.com/uber/pyflame

आप पायफ्लेम का उपयोग करके एक चल रहे अजगर प्रक्रिया की ओर देख सकते हैं।


0

मैंने प्लॉप का इस्तेमाल किया है और पाया है कि यह बहुत हल्का है। पूर्ण में एक त्वरित अंतर्दृष्टि देता है।


vprof एक ऐसा ही उपकरण है जो फ्लेमोग्राफ का भी उपयोग करता है, लेकिन यह मेमोरी प्रोफाइलिंग भी कर सकता है। दुर्भाग्य से यह केवल संचयी समय को दर्शाता है न कि किसी फ़ंक्शन में बिताए गए कुल समय को।
सुदामामी
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.