Я всегда читаю код, чтобы рассчитать время следующим образом:
%timeit function()
Вы можете объяснить, что здесь означает "%"?
Я думаю, что "%" всегда используется для замены чего-либо в строке, например,% s означает замену строки,% d заменяет данные, но я понятия не имею об этом случае.
Ответы:
%timeit
- это волшебная функция ipython , которая может использоваться для измерения времени определенного фрагмента кода (одного оператора выполнения или одного метода).Из документов:
Чтобы использовать его, например, если мы хотим выяснить, является ли использование
xrange
быстрее, чем использованиеrange
, вы можете просто сделать:In [1]: %timeit for _ in range(1000): True 10000 loops, best of 3: 37.8 µs per loop In [2]: %timeit for _ in xrange(1000): True 10000 loops, best of 3: 29.6 µs per loop
И вы получите для них время.
Основное преимущество
%timeit
:что вам не нужно импортировать
timeit.timeit
из стандартной библиотеки , и запускать код несколько раз, чтобы выяснить, какой подход лучше.% timeit автоматически рассчитает количество запусков, необходимых для вашего кода, исходя из окна выполнения в 2 секунды.
Вы также можете использовать текущие консольные переменные без передачи всего фрагмента кода, как в случае создания
timeit.timeit
переменной, встроенной в другую среду, в которой работает timeit.источник
%timeit function()
timer.timeit
, это настоящее имя модуля?10000 loops, best of 3: 29.6 µs per loop
можно интерпретировать как: (1.) выражение запускается 10000 раз, чтобы получить общее время (2.) затем общее время делится на 10000, чтобы получить время «на цикл» и (3.) выполняется вычисление общего времени 3 раза и, наконец (4.) из 3-х полных раз, минимальное общее время (также известное как «лучшее из 3») используется в качестве вывода. моя интерпретация верна, да / нет?В iPython это известно как линейная магия . Они уникальны тем, что их аргументы распространяются только на конец текущей строки, а сами магии действительно структурированы для разработки командной строки.
timeit
используется для измерения времени выполнения кода.Если вы хотите увидеть всю магию, которую вы можете использовать, вы можете просто ввести:
чтобы получить список как линейной магии, так и клеточной магии.
Дополнительная магическая информация из документации здесь :
В зависимости от того, в каком режиме вы находитесь: в режиме строки или ячейки , есть два разных способа использования
%timeit
. Ваш вопрос иллюстрирует первый способ:In [1]: %timeit range(100)
vs.
In [1]: %%timeit : x = range(100) :
источник
IPython их перехватывает, они называются встроенными волшебными командами, вот список: https://ipython.org/ipython-doc/dev/interactive/magics.html
Вы также можете создать свою собственную магию, https://ipython.org/ipython-doc/dev/config/custommagics.html
Вы
timeit
здесь https://ipython.org/ipython-doc/dev/interactive/magics.html#magic-timeitисточник
Я просто хотел бы добавить еще одно полезное преимущество использования% timeit для ответа на мю無, что:
PS: Я знаю, что это должен быть комментарий, на который нужно ответить выше, но в настоящее время у меня недостаточно репутации для этого, надеюсь, что то, что я пишу, будет кому-то полезно и поможет мне заработать достаточно репутации, чтобы комментировать в следующий раз.
источник
Я просто хотел добавить очень тонкий момент по поводу %% timeit. Если он запускает "магию" в ячейке , вы получите ошибку ...
UsageError: магическая функция линии
%%timeit
не найдена... если есть какие-либо строки кода / комментариев выше %% timeit. Другими словами, убедитесь, что %% timeit - первая команда в вашей ячейке.
Я знаю, что это мелочь, о которой скажут все эксперты, но я просто хотел добавить свои полцента для молодых волшебников, начинающих с фокусов.
источник
Магия строк начинается с символа % и работает так же, как вызовы командной строки ОС: они получают в качестве аргумента остальную часть строки, где аргументы передаются без скобок или кавычек. Клеточная магия имеет двойной префикс %% , и это функции, которые получают в качестве аргумента не только остальную часть строки, но и строки под ней в отдельном аргументе.
источник