Модуль timeit позволяет измерить время исполнения кода.
В команде
Вывод у команды будет такой (проверено на Python 3.13.1):
В команде
python3 -m timeit -n 1000 -r 3 "L = [1,2,3,4,5]" "M = [x + 1 for x in L]" используются несколько флагов, которые управляют поведением модуля:-n 1000: флаг указывает количество повторений. Тестируемый код будет выполняться 1000 раз за каждую итерацию.-r 3: флаг задает количество повторных запусков всего тестаВывод у команды будет такой (проверено на Python 3.13.1):
1000 loops, best of 3: 111 nsec per loop
👍1
Из всех флагов только -s действительный:
Для указания кода настройки в режиме командной строки применяется строка после флага
время только итерации:
Подробнее в документации
-s S, --setup=S
statement to be executed once initially (default pass)
Для указания кода настройки в режиме командной строки применяется строка после флага
—s (или несколько в случае многострочного кода настройки), а в режиме вызовов API-интерфейса — аргумент setup. В итоге тесты можно ориентировать более четко, например, выносить инициализацию списка выносится в код, чтобы измерятьвремя только итерации:
python3 -m timeit -n 1000 -r 3 -s "L = [1,2,3,4,5]" "M = [x + 1 for x in L]"
Подробнее в документации
Python documentation
timeit — Measure execution time of small code snippets
Source code: Lib/timeit.py This module provides a simple way to time small bits of Python code. It has both a Command-Line Interface as well as a callable one. It avoids a number of common traps fo...
Что выведет код?
Anonymous Quiz
15%
['spam','spam','spam']
15%
['spamspamspam']
66%
['s', 'p', 'a', 'm', 's', 'p', 'a', 'm', 's', 'p', 'a', 'm']
5%
Error
—
— используется генератор списка
— Функция
'spam' * 3 генерирует строку 'spamspamspam', которая состоит из трех повторений строки 'spam';— используется генератор списка
[], который обходит каждый символ строки 'spamspamspam';— Функция
f(x) просто возвращает переданное ей значение x без изменений.X = 99
def selector(): # Имя X используется, но не присваивается
print(X) # Имя X найдено в глобальной области видимости
selector()
В данной задаче важно помнить, что Python — интерпретируемый язык, то есть код читается и исполняется построчно.
— Переменной
— В функции
— В
— Затем
— Переменной
X присваивается значение 99;— В функции
selector() есть ключевое слово global: X ссылается на глобальную переменную;— В
selector() выполняется команда print(X), которая сразу же обращается к глобальной переменной X, и на данный момент её значение — 99. Поэтому на этом шаге будет выведено 99.— Затем
X присваивается новое значение 88, но это произойдёт после того, как было выведено значение.Операторы
Функции подобного рода, не содержащие return, представляют собой эквивалент Python того, что в ряде языков называется «процедурами». Они обычно вызываются как операторы, а результаты
Об этом стоит знать, потому что Python не будет сообщать о том, что вы пытаетесь потребить результат функции, в которой отсутствуют операторы
return (и yield) в функциях Python необязательны. Когда функция не возвращает значение явно, то она завершает работу, когда управление выходит за конец тела функции. Формально все функции возвращают какое-то значение; если не снабдить функцию оператором return, тогда она автоматически будет возвращать объект None:Функции подобного рода, не содержащие return, представляют собой эквивалент Python того, что в ряде языков называется «процедурами». Они обычно вызываются как операторы, а результаты
None игнорируются, т.к. работа делается без вычисления полезного результата. Об этом стоит знать, потому что Python не будет сообщать о том, что вы пытаетесь потребить результат функции, в которой отсутствуют операторы
return.pandas.Series.between возвращает логическое значение Series, эквивалентное left <= series <= right. При обработке Series возвращает эквивалентную серию, состояющую из True / False.Документация
Однако чтобы отфильтровать датафрейм по числовому столбцу, можно использовать такой синтаксис:
df_filtered = df["col"].between(1983, 1986)