Я использую интеграцию IPython 6.2.1 с Eclipse/PyDev в Ubuntu. Версия Python – 3.5.2.
Я часто вижу, как люди выбирают время для скрипта, например
>>>%timeit for _ in range(1000): True
10000 loops, best of 3: 37.8 µs per loop
Когда я выполняю ту же операцию, мой вывод
>>>%timeit for _ in range(1000): True
20.8 µs ± 353 ns per loop (mean ± std. dev. of 7 runs, 10000 loops each)
Имхо, "лучшее из 3" - лучшая мера, поэтому я хотел бы изменить свой вывод. Я прочитал оба: IPython и документация Python timeit. Они оба даже не упоминают, что вывод может отличаться от «лучшего из 3». Это вопрос реализации Linux/Eclipse/PyDev или есть способ изменить вывод модуля timeit
?
P.S.: То же самое происходит в консоли Eclipse, когда я использую timeit
, поэтому IPython, вероятно, здесь неуместен.
>>>timeit '"-".join(str(n) for n in range(100))'
11 ns ± 0.0667 ns per loop (mean ± std. dev. of 7 runs, 100000000 loops each)
Унутбу указал, что вы можете добиться желаемого поведения внутри программы. Выполнение первого сценария, вызывающего timeit.main()
здесь, действительно возвращает лучшее из 3. Но я бы предпочел версию, которую я могу запускать в интерактивном режиме консоль Эклипс.
best of 3
— это старый стиль отображения. Вероятно, это изменилось в каком-тоipython
релизе. В модулеtimeit
могут быть изменения, но я все еще использую Py 3.5. - person hpaulj   schedule 11.02.2018%timeit??
видно, что отображение создается объектомIPython.core.magics.execution.TimeitResult(loops, repeat, best, all_runs, compile_time, precision)
. - person hpaulj   schedule 11.02.2018ipython
, а неtimeit
напрямую. - person hpaulj   schedule 11.02.2018