В продакшн-сервисе на Python вы замечаете постепенный рост потребления памяти (memory leak). Как будете искать и устранять проблему?
Соберу метрики памяти и сниму heap dump с помощью tracemalloc, objgraph или memory_profiler. Проверю, нет ли висящих ссылок (глобальные коллекции, кэш, циклические ссылки). Если виноваты сторонние библиотеки — обновлю или изолирую. Для оптимизации — внедрю лимиты, пулы объектов, кеш с TTL и мониторинг утечек в CI/CD.
Библиотека собеса по Python
Библиотека собеса по Python
👍3
В чём разница между deepcopy и copy в Python, и как они работают с объектами, содержащими изменяемые и неизменяемые типы данных?
copy.copy создаёт поверхностную копию объекта: сам объект новый, но вложенные изменяемые элементы (списки, словари, пользовательские объекты) остаются ссылками на те же объекты. copy.deepcopy рекурсивно копирует все вложенные структуры, создавая полную независимую копию, обходя граф объектов и учитывая циклические ссылки с помощью внутреннего memo. Для неизменяемых типов (строки, числа, кортежи без изменяемых элементов) оба метода возвращают ту же ссылку.
Библиотека собеса по Python
Библиотека собеса по Python
👍6
Что не так с приведённым кодом?
В Python переменные не объявляются заранее, поэтому интерпретатор самостоятельно определяет их область видимости. Если внутри функции используется переменная, она считается локальной. В данном случае переменная count является глобальной, что приводит к возникновению ошибки в коде.
Библиотека собеса по Python
В Python переменные не объявляются заранее, поэтому интерпретатор самостоятельно определяет их область видимости. Если внутри функции используется переменная, она считается локальной. В данном случае переменная count является глобальной, что приводит к возникновению ошибки в коде.
Библиотека собеса по Python
👍7❤1
Напишите программу для вставки пробела между символами всех элементов массива NumPy
Решение:
import numpy as np
# Create Sample NumPy Array
arr = np.array(['i', 'love', 'NumPy', 'AND', 'interviewbit'], dtype=str)
transformed_arr = np.char.join(" ", arr)
print("Transformed Array: ")
print(transformed_arr)
Библиотека собеса по Python
Решение:
# Create Sample NumPy Array
arr = np.array(['i', 'love', 'NumPy', 'AND', 'interviewbit'], dtype=str)
transformed_arr = np.char.join(" ", arr)
print("Transformed Array: ")
print(transformed_arr)
Библиотека собеса по Python
❤2
Как использовать сеансы на основе файлов?
Чтобы использовать то же самое, вам нужно установить настройки SESSION_ENGINE на "django.contrib.sessions.backends.file".
Библиотека собеса по Python
Библиотека собеса по Python
Что такое контекст в Django?
Context — это имя переменной шаблона сопоставления словаря, данное объектам Python в Django. Это общее имя, но вы можете дать любое другое имя по вашему выбору, если хотите.
Библиотека собеса по Python
Библиотека собеса по Python
CPU-bound пайплайн распараллелен через multiprocessing, но под нагрузкой стал работать медленнее: рост RSS, высокий overhead и низкая утилизация CPU. Как диагностировать и починить?
Померить накладные расходы на IPC/пиклинг (профилировщики, замеры времени map/submit). Укрупнить задачи (batch/chunksize), передавать большие данные через shared memory (multiprocessing.shared_memory, NumPy shared arrays / mmap) вместо копий, инициализировать тяжёлые объекты один раз в initializer воркера. Ограничить число процессов до числа ядер, избегать возврата больших результатов (писать в общий sink).
Библиотека собеса по Python
Библиотека собеса по Python
👍2
Что такое сериализация?
Сериализация — это процесс преобразования объектов в поток байтов для сохранения или передачи.
Это позволяет сохранить состояние объекта в файл или базу данных и восстановить его позже.
Основные преимущества сериализации:
— Сохранение и восстановление объектов между сессиями программы.
— Передача объектов по сети между приложениями и машинами.
— Преобразование объектов в формат хранения, независимый от платформы.
Библиотека собеса по Python
Сериализация — это процесс преобразования объектов в поток байтов для сохранения или передачи.
Это позволяет сохранить состояние объекта в файл или базу данных и восстановить его позже.
Основные преимущества сериализации:
— Сохранение и восстановление объектов между сессиями программы.
— Передача объектов по сети между приложениями и машинами.
— Преобразование объектов в формат хранения, независимый от платформы.
Библиотека собеса по Python
👍4
Что такое async?
Async — это синтаксис для создания асинхронного кода на основе корутин.
Асинхронное программирование позволяет выполнять операции вне основного потока выполнения программы.
С помощью async def определяются асинхронные функции-корутины. Такие функции не выполняются сразу, а возвращают объект-корутину.
Для запуска корутин используется await. Это передает управление обратно в событийный цикл до завершения корутины.
Asyncio — стандартный модуль для работы с асинхронным кодом. Он содержит событийный цикл и различные классы.
Асинхронный код усложняет логику программы, но позволяет добиться большей производительности за счет неблокирующих вызовов.
*Корутины полезны для операций ввода/вывода, ожидания сети, обращения к БД — там, где нужно не блокировать основной поток.
Библиотека собеса по Python
Асинхронное программирование позволяет выполнять операции вне основного потока выполнения программы.
С помощью async def определяются асинхронные функции-корутины. Такие функции не выполняются сразу, а возвращают объект-корутину.
Для запуска корутин используется await. Это передает управление обратно в событийный цикл до завершения корутины.
Asyncio — стандартный модуль для работы с асинхронным кодом. Он содержит событийный цикл и различные классы.
Асинхронный код усложняет логику программы, но позволяет добиться большей производительности за счет неблокирующих вызовов.
*Корутины полезны для операций ввода/вывода, ожидания сети, обращения к БД — там, где нужно не блокировать основной поток.
Библиотека собеса по Python
👍3🔥1
Что такое и чем отличается old-style от new-style classes?
— Old-style классы наследуются непосредственно от объекта класса type. New-style классы наследуются от объекта класса object.
— New-style классы поддерживают дополнительные возможности, например denoscriptors, properties, slots. В old-style классах они не работают.
— В new-style классах метод init вызывается при наследовании, в отличие от old-style классов.
— New-style классы предпочтительны, так как полностью поддерживают особенности ООП. Большинство библиотек требуют именно их.
Рекомендуется использовать new-style классы, унаследованные от object. Они обладают расширенным функционалом и лучше взаимодействуют с другими объектами.
Библиотека собеса по Python
— Old-style классы наследуются непосредственно от объекта класса type. New-style классы наследуются от объекта класса object.
— New-style классы поддерживают дополнительные возможности, например denoscriptors, properties, slots. В old-style классах они не работают.
— В new-style классах метод init вызывается при наследовании, в отличие от old-style классов.
— New-style классы предпочтительны, так как полностью поддерживают особенности ООП. Большинство библиотек требуют именно их.
Рекомендуется использовать new-style классы, унаследованные от object. Они обладают расширенным функционалом и лучше взаимодействуют с другими объектами.
Библиотека собеса по Python
👍5
«Этот манёвр будет стоить нам 51 год...»
На собеседованиях для Python-разработчиков всё чаще спрашивают алгоритмы и системную архитектуру. Рынок перегрет, и чтобы выделиться, одних знаний синтаксиса уже недостаточно.
До 19 января в Proglib Academy действуют старые условия. Забирайте базу сейчас:
— Разработка ИИ-агентов
— Математика для разработки AI-моделей
— ML для старта в Data Science
— Математика для Data Science
— Специалист по ИИ
— Алгоритмы и структуры данных
— Программирование на Python
— Основы IT для непрограммистов
— Архитектуры и шаблоны проектирования
Подготовиться к следующему шагу
⚠️ Повышение цен уже 19 января
На собеседованиях для Python-разработчиков всё чаще спрашивают алгоритмы и системную архитектуру. Рынок перегрет, и чтобы выделиться, одних знаний синтаксиса уже недостаточно.
До 19 января в Proglib Academy действуют старые условия. Забирайте базу сейчас:
— Разработка ИИ-агентов
— Математика для разработки AI-моделей
— ML для старта в Data Science
— Математика для Data Science
— Специалист по ИИ
— Алгоритмы и структуры данных
— Программирование на Python
— Основы IT для непрограммистов
— Архитектуры и шаблоны проектирования
Подготовиться к следующему шагу
⚠️ Повышение цен уже 19 января
Когда возникает NotImplementedError?
Исключение NotImplementedError возникает в тех случаях, когда метод или функция должны быть реализованы в подклассе, но на самом деле не были реализованы. Это часто происходит, когда родительский класс объявляет метод, но не предоставляет его реализацию, оставляя эту задачу для подклассов. Если подкласс не реализует данный метод, при его вызове будет сгенерировано исключение NotImplementedError. Это может быть полезно для отладки, так как позволяет убедиться, что все необходимые методы присутствуют в подклассах. Кроме того, такое исключение может возникнуть и в других ситуациях, например, при попытке использовать неопределённый метод или функцию.
Библиотека собеса по Python
Библиотека собеса по Python
👍4
Как функционируют менеджеры контекста в Python и в каких ситуациях они могут быть полезны?
Менеджеры контекста в Python предназначены для эффективного управления ресурсами, такими как файлы, сетевые соединения или блокировки, обеспечивая автоматическое освобождение этих ресурсов по завершении работы. Их основное применение заключается в необходимости гарантированного освобождения ресурсов, даже если в процессе возникают ошибки. Менеджеры контекста создаются с использованием ключевого слова with, которое автоматически вызывает методы __enter__ и __exit__ у соответствующего объекта.
Библиотека собеса по Python
Библиотека собеса по Python
👍4
Что будет если ошибку не обработает блок except?
Если ошибка не будет обработана в блоке except, то программа прервется и выдаст сообщение об ошибке. Это называется необработанным исключением.
При возникновении исключения Python генерирует traceback — последовательность вызовов функций, которая привела к ошибке.
Если исключение не перехватывается блоком except, то traceback выводится пользователю и программа завершается аварийно.
Библиотека собеса по Python
При возникновении исключения Python генерирует traceback — последовательность вызовов функций, которая привела к ошибке.
Если исключение не перехватывается блоком except, то traceback выводится пользователю и программа завершается аварийно.
Библиотека собеса по Python
👍4