Source: Timeit

← Rendered

markdown source:

---
description: Профилировщик небольших объектов кода в python
tags: python-standart-library python
title: Timeit
---
timeit предоставляет интерфейс, позволяющий замерить время выполнения небольших врагментов кода. Точность обьеспечивается за счет функции `time()`, а снижение накладных расходов запуска достигается путем многократного запуска. Модуль определяет [единственный класс](https://docs.python.org/3/library/timeit.html#timeit.Timer) `Timer`, который инициализируется тестируемым выражением и и инструкцией настроек пролифировщика, задающим переменные выражения. Модуль выполняет инструкцию настройки один раз, после чего можно выполнить замер через метод `timeit()`, которому можно передать число ожидаемых повторений (дефолтное значение 1000000). Повторить весь цикл можно методом `repeat()` (дефолтное значение повторов - 5)

```python
>>> import timeit
>>> t = timeit.Timer('char in text', setup='text = "sample string"; char = "g"')
>>> t.timeit()
0.3955516149999312
>>> t.repeat()
[0.40183617287970225, 0.37027556854118704, 0.38344867356679524, 0.3712595970846668, 0.37866875250654886]
```

Для простых случаев проверку можно запустить не устанавливыая переменные используя `timeit()` уровня модуля:

```python
>>> import timeit
>>> timeit.timeit('"-".join(str(n) for n in range(100))', number=10000)
0.3018611848820001
>>> timeit.timeit('"-".join([str(n) for n in range(100)])', number=10000)
0.2727368790656328
>>> timeit.timeit('"-".join(map(str, range(100)))', number=10000)
0.23702679807320237
```

Также профилировщик можно вызвать через командную строку: `python -m timeit '"-".join(str(n) for n in range(100))'`. Интерфейс командной строки [тут](https://docs.python.org/3/library/timeit.html#command-line-interface)

Модуль выполняет инструкцию настройки один раз, после чего выполняет переданное выражение

```python
>>> import timeit
>>> timeit.timeit('char in text', setup='text = "sample string"; char = "g"')
0.41440500499993504
>>> timeit.timeit('text.find(char)', setup='text = "sample string"; char = "g"')
1.7246671520006203
```

Смотри сеще:

- [документация](https://docs.python.org/3/library/timeit.html#module-timeit)
- [[profile]]
- [[date-and-time-in-python]]
- [[python-standart-library]]


[profile]: profile "Profile"
[date-and-time-in-python]: date-and-time-in-python "Date and time in python"
[python-standart-library]: ../lists/python-standart-library "Стандартная библиотека python и полезные ресурсы"