मैं उसी पायथन मॉड्यूल में कई फ़ंक्शन लिखना चाहता हूं, जिनमें से प्रत्येक timeit
का उपयोग करके एक अलग प्रोफाइलिंग परीक्षण है, ताकि मैं निर्दिष्ट करने के लिए कमांड लाइन तर्क का उपयोग कर सकूं एक चलाने के लिए। एक अनुभवहीन उदाहरण (profiling.py) होगा:क्या हम एक ही मॉड्यूल में टाइमिट के साथ प्रत्येक कार्य को चला सकते हैं
import sys
import timeit
def foo():
setup = """
import random
"""
foo_1 = """
for i in range(1000):
random.randint(0, 99) + random.randint(0, 99)
"""
foo_2 = """
for i in range(1000):
random.randint(0, 99) + random.randint(0, 99)
"""
foo_3 = """
for i in range(1000):
random.randint(0, 99) + random.randint(0, 99)
"""
print 'foo_1', timeit.Timer(foo_1, setup).timeit(1000)
print 'foo_2', timeit.Timer(foo_2, setup).timeit(1000)
print 'foo_3', timeit.Timer(foo_3, setup).timeit(1000)
if __name__ == '__main__':
if (len(sys.argv) > 1):
if (sys.argv[1] == 'foo'):
foo()
else:
print 'Which profiling do you want to run?'
print 'available:'
print ' foo'
हालांकि, जब मैं python profiling.py foo
कोशिश, मैं त्रुटि की तरह मिलता है निम्नलिखित:
foo_1
Traceback (most recent call last):
File "profiling.py", line 32, in <module>
foo()
File "profiling.py", line 25, in foo
print 'foo_1', timeit.Timer(foo_1, setup).timeit(1000)
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/timeit.py", line 136, in __init__
code = compile(src, dummy_src_name, "exec")
File "<timeit-src>", line 6
_t0 = _timer()
^
IndentationError: unindent does not match any outer indentation level
मैं हमेशा की तरह अंतरिक्ष/टैब दांतेदार बनाना त्रुटि के लिए खोज की है कोड में, लेकिन कोई नहीं मिला। इसलिए मुझे आश्चर्य है कि ऐसा इसलिए है क्योंकि मैं एक फ़ंक्शन के अंदर timeit
परीक्षण लपेटता हूं, और इसकी अनुमति नहीं है?
क्या होता है यदि आप समय-समय पर चल रहे तारों से व्हाइटस्पेस को हटाते हैं? (उदाहरण के लिए 'foo_1 = "i श्रेणी में (1000): \ n random.randint (0, 99) + random.randint (0, 99)" ') – mgilson
क्या आपने किसी भी मौके से उस पंक्ति को कॉपी और पेस्ट किया था? कई बार जब आप कॉपी और पेस्ट करते हैं तो आपको मेल खाने वाले टैब आकार या टैब को सफेद-रिक्त स्थान के कारण उस त्रुटि का सामना करना पड़ेगा। सुझाव के लिए –