[Tutor] timeit at the command line

Dick Moores rdm at rcblue.com
Tue Oct 3 15:47:32 CEST 2006


At 05:54 AM 10/3/2006, Kent Johnson wrote:
>Dick Moores wrote:
>>Very interesting. I thought a line of that template looked 
>>familiar. I was seeing "_t0 = _timer()" regularly when I had the -s 
>>option set without any setup:
>>C:\>python -m timeit  -r 3 -s"for x in range(10000):" " x*x"
>>Traceback (most recent call last):
>>    File "E:\Python25\lib\runpy.py", line 95, in run_module
>>      filename, loader, alter_sys)
>>    File "E:\Python25\lib\runpy.py", line 52, in _run_module_co
>>      mod_name, mod_fname, mod_loader)
>>    File "E:\Python25\lib\runpy.py", line 32, in _run_code
>>      exec code in run_globals
>>    File "E:\Python25\lib\timeit.py", line 285, in <module>
>>      sys.exit(main())
>>    File "E:\Python25\lib\timeit.py", line 249, in main
>>      t = Timer(stmt, setup, timer)
>>    File "E:\Python25\lib\timeit.py", line 116, in __init__
>>      code = compile(src, dummy_src_name, "exec")
>>    File "<timeit-src>", line 4
>>      _t0 = _timer()
>>        ^
>>But I don't understand what the error has to do with _t0 . That's 
>>OK, don't bother to explain. I don't understand classes yet anyway. 
>>Should get into them soon, with Wes Chun's book.
>
>If you substitute your code into the template by hand and look at 
>the actual exception (not shown above) you should see the problem. 
>It doesn't have anything to do with classes.

I meant timeit.py has classes.

OK, I called timeit.py with this template:

template = """
def inner(_it, _timer):
     %(setup)s
     _t0 = _timer()
     for _i in _it:
         %("x=0" "while x<100": " x*x")s
     _t1 = _timer()
     return _t1 - _t0
"""
And got this error:

E:\Python25\Scripts-NotMine>timeit.py
Traceback (most recent call last):
   File "E:\Python25\Scripts-NotMine\timeit.py", li
     sys.exit(main())
   File "E:\Python25\Scripts-NotMine\timeit.py", li
     t = Timer(stmt, setup, timer)
   File "E:\Python25\Scripts-NotMine\timeit.py", li
     src = template % {'stmt': stmt, 'setup': setup
KeyError: '"x=0" "while x<100": " x*x"'

So what's the error? I've probably misunderstood how to do the substitution..

Dick





More information about the Tutor mailing list