Должен ли таймер захватывать все время создания списка?

Вслед за этим Контекстным менеджером Python, измеряющим время , я попробовал сам.

from time import perf_counter


class catchtime:
    def __enter__(self):
        self.start = perf_counter()
        return self

    def __exit__(self, type, value, traceback):
        self.time = perf_counter() - self.start
        self.readout = f"Time: {self.time:.3f} seconds"
        print(self.readout)


with catchtime() as timer:
    a = [1] * 1000000000
    print(1)

print(timer.readout)

Дело в том, что даже после завершения отсчета времени программа Python прекращает выполнение только через несколько секунд. Я читал, что это связано с памятью и сборкой мусора. Может ли кто-нибудь объяснить мне это и должен ли таймер действительно захватывать все время?

Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
3
0
50
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Во-первых, как вы сказали, Python с помощью своих обработчиков очистки будет делать что-то, связанное со сборкой памяти и мусора, что называется действиями по очистке. Например, выполнение предложений finally операторов try, очистка буферов ввода-вывода, уничтожение каждого отдельного объекта, закрытие потоков и дочерних процессов, освобождение памяти, выделенной библиотеками, и т. д.

Во-вторых, вы можете использовать os._exit(), чтобы немедленно выйти из Python, не выполняя никакой очистки самим Python. Это похоже на команду kill в Linux или команду taskkill в Windows. Это не рекомендуется, так как это грубый и агрессивный.

В-третьих, если вы действительно хотите запечатлеть все время, я предлагаю отслеживать ход выполнения кода Python с помощью другого прогресса.

Другие вопросы по теме

Дилемма 100 заключенных: кодекс всегда приводит к провалу (все заключенные умирают)
Как устранить ошибку AttributeError: у модуля «Фиона» нет атрибута «Путь»?
Я работаю над тем, чтобы сделать бота Python, который будет нажимать кнопку в списке, который повторяется сам, используя селен
Какие замены регулярных выражений помогают при переписывании SQL-запросов MS Access как простых запросов TSQL? Как их можно зациклить с помощью Excel в качестве входных и выходных данных?
Сообщение об ошибке с использованием нескольких замен строк %s
Должны ли классы аутентификации и классы разрешений в представлениях Django REST Framework определяться с помощью списков или кортежей?
Есть ли сценарий, в котором `foo in list(bar)` нельзя заменить на `foo in bar`?
Выполняется ли простое задание в Python дважды?
Итерация (или нет?) параметров для matplotlib для построения функции в Python
Установка ограничения рекурсии не работает в автономном интерпретаторе Python, но работает в онлайн-интерпретаторах

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

Почему результаты AES-256-CBC в PHP и Python различаются при использовании одних и тех же ключей и данных?
С использованием attrs pre-commit ошибка mypy: неожиданный аргумент ключевого слова
Получение группового ключа при использовании группы путем применения (списка)
Почему pytorch tensor.item() дает неточный вывод для любого ввода действительного числа, но дает точный вывод для числа, которое заканчивается на .0 или .5?
Рассчитать количество точек заданного радиуса по координатам X и Y
Почему некоторые функции регулярных выражений возвращают объект соответствия, а некоторые нет?
Группируйте элементы в фрейме данных и отображайте их в хронологическом порядке
Операции Pandas между типами с плавающей запятой и NaN
Используйте спецификатор формата для преобразования столбца float/int в фрейме данных Polars в строку
Как ВСТАВИТЬ в таблицу с помощью AUTO_INCREMENT?