2013-04-04 7 views
13

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

हालांकि, जब मैं डेटा सॉर्ट करता हूं, तो मेरे पास calls, ncalls और pcalls कुंजी के बीच विकल्प है। प्रलेखन का कहना है कि calls और ncallsकॉल गिनती कर रहे हैं, जब pcallsआदिम कॉल गिनती है। calls या ncalls द्वारा सॉर्टिंग समान है? pcalls के साथ क्या अलग है?

उत्तर

13

http://docs.python.org/2/library/profile.html#module-cProfile

हम मतलब है कि कॉल प्रत्यावर्तन के माध्यम से प्रेरित नहीं था आदिम परिभाषित करते हैं।

... जब समारोह recurse नहीं करता है, इन दो मानों एक ही

द्वारा calls या ncalls ही है छंटाई कर रहे हैं।


जब पहले कॉलम में दो नंबर (उदाहरण के लिए, 43/3) देखते हैं, तो बाद आदिम कॉल की संख्या है, और पूर्व कॉल की वास्तविक संख्या है। ध्यान दें कि जब समारोह recurse नहीं करता है, इन दो मानों एक ही हैं, और केवल एक आंकड़ा छपा है:

In [43]: def a(i): 
    ....:  if i == 0: 
    ....:   return 
    ....:  a(i-1) 
    ....: 


In [54]: %prun a(0) 
    ncalls tottime percall cumtime percall filename:lineno(function) 
     1 0.000 0.000 0.000 0.000 <ipython-input-43-25b7f3d268b8>:1(a) 


In [55]: %prun a(1) 
    ncalls tottime percall cumtime percall filename:lineno(function) 
    2/1 0.000 0.000 0.000 0.000 <ipython-input-43-25b7f3d268b8>:1(a) 


In [56]: %prun a(3) 
    ncalls tottime percall cumtime percall filename:lineno(function) 
    4/1 0.000 0.000 0.000 0.000 <ipython-input-43-25b7f3d268b8>:1(a) 
संबंधित मुद्दे