📌 🧵 Простое параллельное выполнение с ThreadPoolExecutor
Когда нужно ускорить выполнение нескольких независимых задач (например, загрузку файлов или запросы к API), можно использовать ThreadPoolExecutor из модуля concurrent.futures.
🎯 Итог
ThreadPoolExecutor — простой способ запускать функции в нескольких потоках и ускорять выполнение программы.
Когда нужно ускорить выполнение нескольких независимых задач (например, загрузку файлов или запросы к API), можно использовать ThreadPoolExecutor из модуля concurrent.futures.
🎯 Итог
ThreadPoolExecutor — простой способ запускать функции в нескольких потоках и ускорять выполнение программы.
📌 ⚡ Измеряем время выполнения кода с timeit
Иногда нужно быстро узнать, сколько времени занимает выполнение куска кода. Вместо того чтобы вручную засовывать time.time(), можно использовать модуль timeit, который создан именно для этого.
Модуль автоматически несколько раз выполняет код и выдаёт среднее время — удобно для сравнения разных реализаций.
🎯 Итог
timeit — быстрый способ измерить производительность и выбрать оптимальное решение.
Иногда нужно быстро узнать, сколько времени занимает выполнение куска кода. Вместо того чтобы вручную засовывать time.time(), можно использовать модуль timeit, который создан именно для этого.
Модуль автоматически несколько раз выполняет код и выдаёт среднее время — удобно для сравнения разных реализаций.
🎯 Итог
timeit — быстрый способ измерить производительность и выбрать оптимальное решение.
📌 📝 Чтение больших файлов построчно
Если файл очень большой, не стоит загружать его целиком в память с помощью .read(). Эффективнее читать его по строкам через итерацию — это экономит ресурсы и работает быстрее.
🎯 Итог
Для больших файлов всегда лучше использовать построчное чтение, чтобы не перегружать память и ускорить обработку.
Если файл очень большой, не стоит загружать его целиком в память с помощью .read(). Эффективнее читать его по строкам через итерацию — это экономит ресурсы и работает быстрее.
🎯 Итог
Для больших файлов всегда лучше использовать построчное чтение, чтобы не перегружать память и ускорить обработку.
Бывший пиарщик Сбера и Пепси-колы Юрий Сапожников завел канал, где открыто показывает внутрянку крупных брендов и шутит про русский бизнес.
Еще он на пальцах объясняет, почему все соцсети в 2025 году — это маркетплейсы, почему мы все подсели на Вайлдбериз, и как доставка стала новой нормой. И всё это с цифрами, личными комментариями, ну и мемами, конечно.
Короче Поддержите Юру подпиской — видно, что чувак шарит: клиик
Еще он на пальцах объясняет, почему все соцсети в 2025 году — это маркетплейсы, почему мы все подсели на Вайлдбериз, и как доставка стала новой нормой. И всё это с цифрами, личными комментариями, ну и мемами, конечно.
Короче Поддержите Юру подпиской — видно, что чувак шарит: клиик
📌 📅 Получение текущей даты и времени в нужном формате
Иногда нужно вывести дату и время в читаемом виде (например, для логов). Python делает это просто через модуль datetime.
🎯 Итог
Форматирование дат и времени в Python — гибкое и простое, можно подстроить вывод под любой формат (ISO, локальный, для логов и т. д.).
Иногда нужно вывести дату и время в читаемом виде (например, для логов). Python делает это просто через модуль datetime.
🎯 Итог
Форматирование дат и времени в Python — гибкое и простое, можно подстроить вывод под любой формат (ISO, локальный, для логов и т. д.).
👆Девочки, я дико извиняюсь, но мы нашли алмаз, где собраны лучшие мемы про работу — милый, я на созвоне
Начальнику вход строго запрещен! — @sozvon
Начальнику вход строго запрещен! — @sozvon
⚙️ Использование contextlib.suppress для игнорирования ошибок
Иногда нужно выполнить код, который может упасть, но ошибка при этом не критична.
Вместо громоздкого try/except, можно изящно подавить исключения!
🎯 Итог
Используй contextlib.suppress для безопасного выполнения кода, где ошибка не требует обработки. Это делает код компактнее и чище.
Иногда нужно выполнить код, который может упасть, но ошибка при этом не критична.
Вместо громоздкого try/except, можно изящно подавить исключения!
🎯 Итог
Используй contextlib.suppress для безопасного выполнения кода, где ошибка не требует обработки. Это делает код компактнее и чище.
🧵 Параллельное выполнение задач с ThreadPoolExecutor
Если нужно ускорить выполнение нескольких независимых операций (например, сетевых запросов или чтения файлов) — можно использовать потоки из concurrent.futures.
🎯 Итог
ThreadPoolExecutor позволяет легко запускать несколько задач одновременно, экономя время на операциях ввода-вывода.
Если нужно ускорить выполнение нескольких независимых операций (например, сетевых запросов или чтения файлов) — можно использовать потоки из concurrent.futures.
🎯 Итог
ThreadPoolExecutor позволяет легко запускать несколько задач одновременно, экономя время на операциях ввода-вывода.
🕵️♂️ Измеряем время выполнения кода одной строкой
Иногда нужно быстро понять, сколько времени занимает выполнение участка кода. Можно сделать это без дополнительных библиотек.
🎯 Итог
Используйте time.perf_counter() для точного измерения времени выполнения кода — он лучше подходит для микробенчмарков, чем time.time().
Иногда нужно быстро понять, сколько времени занимает выполнение участка кода. Можно сделать это без дополнительных библиотек.
🎯 Итог
Используйте time.perf_counter() для точного измерения времени выполнения кода — он лучше подходит для микробенчмарков, чем time.time().
🔄 Меняем местами значения без временной переменной
Во многих языках для обмена значениями приходится использовать временную переменную, что выглядит громоздко. В Python это делается в одну строку благодаря распаковке кортежей.
🎯 Итог
Python позволяет обменивать значения напрямую через множественное присваивание — без временных переменных и лишнего кода. Лаконично и понятно!
Во многих языках для обмена значениями приходится использовать временную переменную, что выглядит громоздко. В Python это делается в одну строку благодаря распаковке кортежей.
🎯 Итог
Python позволяет обменивать значения напрямую через множественное присваивание — без временных переменных и лишнего кода. Лаконично и понятно!
✅ Проверяем запуск скрипта напрямую: if __name__ == "__main__"
Иногда нужно, чтобы часть кода выполнялась только при прямом запуске файла, а не при его импорте в другой модуль. Новички часто удивляются, почему функции выполняются «сами». Python решает это с помощью специальной проверки.
🎯 Итог
Используйте if name == "__main__" чтобы управлять тем, выполняется ли код при прямом запуске или же файл лишь импортируется как модуль. Это делает программы чище и удобнее для повторного использования.
Иногда нужно, чтобы часть кода выполнялась только при прямом запуске файла, а не при его импорте в другой модуль. Новички часто удивляются, почему функции выполняются «сами». Python решает это с помощью специальной проверки.
🎯 Итог
Используйте if name == "__main__" чтобы управлять тем, выполняется ли код при прямом запуске или же файл лишь импортируется как модуль. Это делает программы чище и удобнее для повторного использования.
Примите участие в турнире для школьников «Решись!»
Турнир «Решись!» — онлайн-состязание для школьников 10—11-х классов по четырем направлениям: разработке, искусственному интеллекту, бизнес-аналитике, а также дизайну.
«Решись!» для школьников — это возможность:
— получить грант на обучение в Центральном университете до 100% и другие призы;
— пополнить портфолио;
— проверить знания в ИИ, разработке, дизайне и бизнес-аналитике;
— найти новых знакомых в чате турнира.
Для участия вы можете выбрать как одно направление, так и все четыре — решать вам.
🕒Регистрация продлится до 12 ноября, 16:00 мск, как и отборочный тур.
👉Подробности о турнире и регистрация на сайте
Турнир «Решись!» — онлайн-состязание для школьников 10—11-х классов по четырем направлениям: разработке, искусственному интеллекту, бизнес-аналитике, а также дизайну.
«Решись!» для школьников — это возможность:
— получить грант на обучение в Центральном университете до 100% и другие призы;
— пополнить портфолио;
— проверить знания в ИИ, разработке, дизайне и бизнес-аналитике;
— найти новых знакомых в чате турнира.
Для участия вы можете выбрать как одно направление, так и все четыре — решать вам.
🕒Регистрация продлится до 12 ноября, 16:00 мск, как и отборочный тур.
👉Подробности о турнире и регистрация на сайте
Безопасные параметры в SQL через SQLAlchemy
Новички часто формируют SQL строкой, подставляя значения через f-string → это приводит к SQL-инъекциям. Используйте bind-параметры (:param) — SQLAlchemy сам экранирует значения, защищая запрос.
Не формируйте SQL вручную через f-string.
Используйте :param + словарь → и сразу получаете безопасность и читаемость запроса.
Новички часто формируют SQL строкой, подставляя значения через f-string → это приводит к SQL-инъекциям. Используйте bind-параметры (:param) — SQLAlchemy сам экранирует значения, защищая запрос.
Не формируйте SQL вручную через f-string.
Используйте :param + словарь → и сразу получаете безопасность и читаемость запроса.
Автоматическое создание таблиц из моделей SQLAlchemy
Иногда нужно быстро поднять базу данных на основе ORM-моделей, не создавая миграции вручную.
С помощью Base.metadata.create_all() можно автоматически создать все таблицы, определённые в ваших моделях, прямо в базе данных. Это особенно удобно для тестов или прототипов.
🎯 Итог:
Base.metadata.create_all() позволяет мгновенно создать все таблицы из моделей без Alembic — идеально для тестов, демо и начальной настройки проекта.
Иногда нужно быстро поднять базу данных на основе ORM-моделей, не создавая миграции вручную.
С помощью Base.metadata.create_all() можно автоматически создать все таблицы, определённые в ваших моделях, прямо в базе данных. Это особенно удобно для тестов или прототипов.
🎯 Итог:
Base.metadata.create_all() позволяет мгновенно создать все таблицы из моделей без Alembic — идеально для тестов, демо и начальной настройки проекта.
Быстрое измерение времени выполнения куска кода
Иногда нужно понять, где в проекте просадка по производительности, но тянуть профилировщик — слишком долго. В таких случаях помогает простой таймер через time.perf_counter().
Он даёт высокоточную измерительную шкалу и идеально подходит для быстрого анализа производительности отдельных функций.
🎯 Итог:
time.perf_counter() — самый простой способ быстро понять, где код тормозит, без сторонних библиотек и сложных инструментов.
Иногда нужно понять, где в проекте просадка по производительности, но тянуть профилировщик — слишком долго. В таких случаях помогает простой таймер через time.perf_counter().
Он даёт высокоточную измерительную шкалу и идеально подходит для быстрого анализа производительности отдельных функций.
🎯 Итог:
time.perf_counter() — самый простой способ быстро понять, где код тормозит, без сторонних библиотек и сложных инструментов.