2011-05-11 7 views
18

मैं एक numpy स्क्रिप्ट प्रोफ़ाइल पायथन के (v2.4) profile मॉड्यूल का उपयोग कर रहा है, और निम्न प्रविष्टि निष्पादन समय के थोक के लिए खाते में प्रतीत होता है (?):अजगर के प्रोफ़ाइल मॉड्यूल: <string>: 1

ncalls tottime percall cumtime percall filename:lineno(function) 
256/1 0.000 0.000 7.710 7.710 <string>:1(?) 

दुर्भाग्यवश, इसकी उपस्थिति Google को कठिन बनाती है।

मैं यह पता लगाने के बारे में कैसे जा सकता हूं कि यह वास्तव में क्या है? python -m profile -s cumulative script.py

+0

क्या आप प्रोफाइलर चलाने के लिए 'profile.run()' का उपयोग कर रहे हैं? फिर ': 1' इस फ़ंक्शन में आपके द्वारा पारित कथन स्ट्रिंग की पहली पंक्ति को संदर्भित करता है। यदि आप प्रोफाइलर को एक अलग तरीके से कॉल कर रहे हैं, तो कृपया निर्दिष्ट करें। –

+0

@ स्वेन मार्नच: अच्छा बिंदु, मैंने इस जानकारी को प्रश्न में जोड़ा है। – NPE

+1

मान लीजिए कि आप पूछ रहे हैं क्योंकि आप उच्च प्रदर्शन चाहते हैं, [इसे आजमाएं] (http://stackoverflow.com/questions/4295799/how-to-improve-performance-of-this-code/4299378#4299378)। –

उत्तर

19

इस लाइन पर ध्यान न दें:

संपादित प्रोफाइलर इस प्रकार खोल से चलाया जाता है। यह एक आर्टिफैक्ट है कि प्रोफाइलर को कैसे कार्यान्वित किया जाता है। यह आपको कुछ भी उपयोगी नहीं बता रहा है। इसके लिए "टॉटाइम" मान देखें: 0.000। "टेटटाइम" "< स्ट्रिंग >: 1 (?) निष्पादित करने में व्यतीत समय की मात्रा है" इसके बच्चों को निष्पादित करने में व्यतीत समय। तो, यहां कोई समय नहीं बिताया जाता है। "कमटाइम" और "पर्कल" बड़े हैं क्योंकि उनमें बच्चों में बिताए गए समय शामिल हैं। अधिक जानकारी के लिए http://docs.python.org/library/profile.html#cProfile.run देखें।

+1

लेकिन क्या होगा यदि * सबसे बड़ा * टॉटाइम ' है: 1 ()'? – endolith

+4

': 1 () 'प्रविष्टि-बिंदु पायथन स्क्रिप्ट में शीर्ष-स्तर कोड है। तो यदि आपका सभी कोड "foo.py" में शीर्ष-स्तर है और आप 'python foo.py' करते हैं, तो आपको ': 1 () के लिए एक उच्च टॉइटिम दिखाई देगा। "शीर्ष-स्तर" से, मेरा मतलब किसी भी फ़ंक्शन परिभाषा के अंदर नहीं है - बस सीधे चलाएं। –

संबंधित मुद्दे