Кажется, я не могу заставить timeit.timeit
работать, когда у меня есть исключения в аргументе оператора, переданном как строка:
# after the first and third semicolon, I put 4 spaces
timeit.timeit('try:; a=1;except:; pass')
Это приводит к:
Traceback (most recent call last):
File "a.py", line 48, in <module>
timeit.timeit('try:; a=1;except:; pass')
File "C:\CPython33\lib\timeit.py", line 230, in timeit
return Timer(stmt, setup, timer).timeit(number)
File "C:\CPython33\lib\timeit.py", line 136, in __init__
code = compile(src, dummy_src_name, "exec")
File "<timeit-src>", line 6
try:; a=1;except:; pass
^
SyntaxError: invalid syntax
Я запускаю его с Python 3.3, но та же ошибка возникает даже со старым Python (3.2).
ОБНОВИТЬ:
Я следил за этой документацией (выделено мной) :
класс timeit.Timer(stmt='pass', setup='pass', timer=)
Класс для определения времени выполнения небольших фрагментов кода.
Конструктор принимает оператор для определения времени, дополнительный оператор, используемый для настройки, и функцию таймера. Оба утверждения по умолчанию имеют значение «пройти»; функция таймера зависит от платформы (см. строку документа модуля). stmt и setup также могут содержать несколько операторов, разделенных ; или символом новой строки, если они не содержат многострочных строковых литералов.