Сравните проверку принадлежности элемента в списке и множестве: за счёт какого механизма множество обычно выполняет её быстрее?
База Hintsage
Программирование Python
Язык Python и его модель данных.
Темы раздела
Выберите подраздел
- 0 вопросов
Общие вопросы
Смешанные вопросы по Python.
Открыть раздел - 50 вопросов
Python Core
Типы, области видимости, функции, модули и базовая семантика.
Открыть раздел - 50 вопросов
Модель данных
Протоколы объектов, dunder-методы, дескрипторы и классы.
Открыть раздел - 48 вопросов
Коллекции и итераторы
Коллекции, comprehensions, iterators и generators.
Открыть раздел - 50 вопросов
Функции и декораторы
Замыкания, decorators, callable-объекты и управление контекстом.
Открыть раздел - 50 вопросов
Конкурентность и asyncio
Threads, processes, GIL, coroutines и asyncio.
Открыть раздел - 50 вопросов
Память и производительность
Управление памятью, профилирование и оптимизация Python.
Открыть раздел - 50 вопросов
Тестирование
pytest, fixtures, mocks и организация тестов.
Открыть раздел
Практика
Вопросы: Программирование Python
На микробенчмарке первые вызовы Python-функции заметно медленнее последующих: какой механизм CPython нужно учитывать при интерпретации результата?
В обработчике после создания малого memoryview память большого исходного буфера не освобождается: какой механизм это объясняет?
Каким образом слабая ссылка позволяет отслеживать объект, не продлевая его время жизни?
В каком случае поверхностная копия вложенной структуры почти не снижает её потребление памяти?
При создании тысяч однотипных объектов память неожиданно велика: как словари экземпляров могут разделять структуру ключей?
За счёт какого механизма добавление элементов в список Python обычно имеет амортизированную сложность O(1), хотя иногда сопровождается перераспределением памяти?
Что делает последовательную конкатенацию строк в цикле потенциально квадратичной по времени?
При оценке памяти объекта через sys.getsizeof получилась неожиданно малая цифра: какой принцип измерения нужно проверить первым?
Что объясняет рост памяти после замены неизменяемых кортежей на списки?
В профиле tracemalloc текущее потребление вернулось почти к исходному, но пиковое осталось высоким: что это означает?
В отчёте cProfile функция выглядит дорогой, хотя её собственное тело быстрое: какой показатель нужно проверить, чтобы отделить её время от времени вызванных функций?
В обработчике бинарных данных разберите причину лишних копирований и выберите замену, уменьшающую пиковое потребление памяти при последовательной обработке срезов:
def consume(packet):
pass
def handle(data, ranges):
for start, end in ranges:
packet = data[start:end]
consume(packet)
payload = b"x" * 10_000_000
handle(payload, [(0, 1_000_000), (1_000_000, 2_000_000)])
В сервисе после добавления мемоизации память постоянно растёт, хотя сборщик мусора работает: какой механизм кэша это объясняет?
Объясните механизм, благодаря которому генератор обычно снижает пиковое потребление памяти при последовательной обработке данных.
За счёт какого механизма __slots__ уменьшает память экземпляров Python-класса?
Как CPython обнаруживает и освобождает недостижимый цикл ссылок, который не удаляется одним подсчётом ссылок?
Как механизм copy-on-write позволяет процессу, созданному через fork, читать память родителя без немедленного полного копирования?
В приложении RSS процесса растёт, но снимки tracemalloc почти не меняются: какой механизм это объясняет?
Из-за чего освобождение крупных объектов в CPython может не уменьшить RSS процесса?
Показано 81–100 из 348