Задать вопрос
@danila_belyy
Поступил в ВУЗ, хочу понять суть программирования.

Модуль time выдает разные значения?

Сделал две функции по созданию списка.... Один через цикл, второй - через генератор списка. (Короче не особо). Важно, что я хотел замерить скорость выполнения функций, а по итогу ответы постоянно разные...
import time

def cickle():
    start = time.time()
    lst = []
    for i in range(10001):
        if i % 2 == 0:
            lst.append(i)
    print(time.time()-start)
    return lst


def generator():
    star = time.time()
    lst = [i for i in range(10001) if i % 2 == 0]
    print(time.time()-star)
    return lst


l1 = cickle()
l2 = generator()


Запуск:
Выход1:
0.0
0.00099945068359375
Запуск
Выход2:
0.0010001659393310547
0.0009982585906982422
Запуск:
Выход3:
0.0010006427764892578
0.0010018348693847656
.
.
То есть, таким образом, я совсем не проверил насколько генератор быстрее списка... Ибо иногда результаты были совершенно иные....
С чем это связано????
  • Вопрос задан
  • 59 просмотров
Подписаться 1 Простой 1 комментарий
Решения вопроса 1
fox_12
@fox_12 Куратор тега Python
Расставляю биты, управляю заряженными частицами
Используйте более правильные инструменты, к примеру jupyter notebook:
def cickle():
    lst = []
    for i in range(10001):
        if i % 2 == 0:
            lst.append(i)
    return lst


def generator():
    lst = [i for i in range(10001) if i % 2 == 0]
    return lst

assert cickle() == generator()  # проверяем что вывод функций одинаков

%timeit cickle()
390 µs ± 5.3 µs per loop (mean ± std. dev. of 7 runs, 1,000 loops each)

%timeit generator()
318 µs ± 8.28 µs per loop (mean ± std. dev. of 7 runs, 1,000 loops each)


62ec2b1883a7a413243748.png
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы