Как работать с большими строками/байтами без лишних копий и перерасхода памяти?
Не конкатенируйте по одному кусочку; для строк используйте ''.join(...)/io.StringIO, для байтов — bytearray/io.BytesIO/memoryview (срезы без копий). Стримьте по чанкам, для файлов подойдёт mmap. Помните: срез bytes копирует, memoryview — нет.
Библиотека собеса по Python
Библиотека собеса по Python
✨ Halloween Special — последний день магии! 👻
Успевай сегодня купить курсы со скидкой 40%!
А также участвуй в розыгрыше MacBook Pro 14 💻
После полуночи останется только тыква 🎃
🔮 Открой портал и выбери курс
Успевай сегодня купить курсы со скидкой 40%!
А также участвуй в розыгрыше MacBook Pro 14 💻
После полуночи останется только тыква 🎃
🔮 Открой портал и выбери курс
Как работать с большими строками/байтами без лишних копий и перерасхода памяти?
Не конкатенируйте по одному кусочку; для строк используйте ''.join(...)/io.StringIO, для байтов — bytearray/io.BytesIO/memoryview (срезы без копий). Стримьте по чанкам, для файлов подойдёт mmap. Помните: срез bytes копирует, memoryview — нет.
Библиотека собеса по Python
Библиотека собеса по Python
❤1
Когда выбирать typing.Protocol вместо ABC и какие есть ограничения?
Protocol — для структурной типизации («утиная» совместимость) без наследования: достаточно совпадения сигнатур. Работает на уровне тайпчекера; для рантайм-проверок нужен и только isinstance/issubclass. Не хранит состояние и не навязывает реализацию — идеален для плагинных интерфейсов.
Библиотека собеса по Python
@runtime_checkableБиблиотека собеса по Python
👍3❤1
Разница между Django OneToOneField и ForeignKey Field?
Оба они являются наиболее распространенными типами полей, используемых в Django. Единственное различие между ними заключается в том, что поле ForeignKey состоит из параметра on_delete вместе с классом модели, поскольку оно используется для отношений «многие к одному», тогда как, с другой стороны, OneToOneField реализует только отношение «один к одному» и требует только класс модели.
Библиотека собеса по Python
Библиотека собеса по Python
Что делает функция scandir?
Функция os.scandir() в Python предназначена для получения итератора объектов os.DirEntry, которые представляют записи в указанном каталоге. Записи возвращаются в случайном порядке, при этом специальные записи '.' и '..' всегда будут находиться в начале списка.
Библиотека собеса по Python
Библиотека собеса по Python
Что такое old-style и new-style классы и в чем их различия?
— Old-style классы наследуются напрямую от класса type, тогда как new-style классы имеют наследование от класса object.
— New-style классы предлагают дополнительные функции, такие как дескрипторы, свойства и слоты, которые недоступны в old-style классах.
— В new-style классах метод __init__ вызывается при наследовании, в отличие от old-style классов.
— New-style классы являются предпочтительными, так как они полностью поддерживают принципы объектно-ориентированного программирования. Большинство библиотек требуют именно их использование.
Рекомендуется применять new-style классы, унаследованные от object, поскольку они обладают расширенными возможностями и лучше интегрируются с другими объектами.
Библиотека собеса по Python
— New-style классы предлагают дополнительные функции, такие как дескрипторы, свойства и слоты, которые недоступны в old-style классах.
— В new-style классах метод __init__ вызывается при наследовании, в отличие от old-style классов.
— New-style классы являются предпочтительными, так как они полностью поддерживают принципы объектно-ориентированного программирования. Большинство библиотек требуют именно их использование.
Рекомендуется применять new-style классы, унаследованные от object, поскольку они обладают расширенными возможностями и лучше интегрируются с другими объектами.
Библиотека собеса по Python
Как реализовать корректный graceful shutdown в asyncio-сервисе без потери данных?
Ловите SIGTERM/SIGINT (Unix — loop.add_signal_handler), ставьте общий флаг/Event, отменяйте воркеры через TaskGroup/cancel(), ждите их в try/except CancelledError/finally. Давайте тайм-аут на дренаж очередей и завершение in-flight операций, корректно закрывайте пулы (БД/HTTP). В ASGI используйте lifespan-хуки (startup/shutdown).
Библиотека собеса по Python
Библиотека собеса по Python
Как находить и устранять утечки памяти в долгоживущем сервисе?
Включите tracemalloc и снимайте снэпшоты до/после нагрузки, ищите рост по трассам; проверяйте циклы gc.get_objects() и gc.garbage, избегайте __del__ на участниках циклов, используйте weakref для обратных ссылок. Ограничивайте кэши (lru_cache(maxsize=…)), следите за «вечно живущими» задачами asyncio, закройте пулы/соединения и проверяйте, что обработчики событий не держат замыкания на большие объекты.
Библиотека собеса по Python
Библиотека собеса по Python