Разъяснивший Python
Відкрити в Telegram
Твой проводник в омут Python'а Ссылка: @Portal_v_IT Сотрудничество: @oleginc
Показати більше6 908
Підписники
-624 години
-277 днів
-5730 днів
Архів дописів
6 908
Конвертируем PDF в TXT
Продолжаем делиться циклом видеоматериалов, посвященный работе с текстовыми документами. В этот раз автор наглядно демонстрирует конвертацию PDF-файла в TXT-файл.
Смотреть...
Разъяснивший Python
6 908
Погрузитесь в ИТ за 5 дней и получите доступ к высокооплачиваемым вакансиям!
Бесплатный короткий курс для тех, кто хочет не просто понять, чем занимаются айтишники, но и получить реальный опыт работы с ИТ‑системами.
Всего за 5 дней вы освоите ключевые компоненты ИТ‑сферы, разберёте 6 профессий и получите возможность выйти на зарплату 150–250 тыс.
Курс полностью практический. 8 мини‑проектов с реальными задачами, где вы научитесь: писать код, работать с инфраструктурой, разбираться в сетях, облаке и защите данных.
Подойдёт новичкам и тем, кто уже в ИТ. Количество мест ограничено — регистрируйтесь по ссылке и начинайте практику.
Реклама. Информация о рекламодателе по ссылкам в посте.
6 908
GIL в threading — это боль, которую многие просто принимают как данность
До Python 3.13 альтернатив не было:
multiprocessing с оверхедом и морокой передачи данных, или asyncio, бесполезный при CPU-bound задачах. Реальные кейсы — обработка данных, парсинг, криптография — где threading кажется логичным, но GIL заставляет ядра простаивать, а однопоточный код обгоняет многопоточный.
Кейс из продакшна: пул потоков без прироста
Я написал пул потоков для обработки пакетов данных: каждый поток выполнял CPU-bound трансформацию. GIL не отпускался, прирост 0%. Переписал на multiprocessing — 3x, но память выросла в 4 раза. Типичная ошибка: думать, что threading даст параллелизм для чистых вычислений.
Free-threaded Python 3.13: сборка без GIL
В 3.13 появился флаг --disable-gil. Потоки наконец работают параллельно. На четырех ядрах прирост по CPU-bound задачам — 3-4x. Пример теста:
# threading с GIL (стандартная сборка)
import threading, time
def work():
for _ in range(10**7):
x = 1 + 1
threads = [threading.Thread(target=work) for _ in range(4)]
start = time.time()
for t in threads: t.start()
for t in threads: t.join()
print(f"С GIL: {time.time() - start:.2f}s")
# Вывод: ~2.5s (почти как последовательно)
# free-threaded (сборка без GIL) # Тот же код — результат ~0.8s (на 4 ядрах)Разъяснивший Python
6 908
Пишем свой HEX-редактор
Делимся подробным гайдом по созданию собственного HEX-редактора. Ты не только напишешь редактор, но и разберешься во всех внутренностях проекта: от битового представления до цветовой подсветки.
Читать...
Разъяснивший Python
6 908
Декораторы классов
В этом примере мы определяем декоратор add_hello, который добавляет вывод "Hello!" перед вызовом метода greet в классе MyClass. Мы применяем декоратор к методу greet с помощью @add_hello, и теперь при вызове obj.greet(), помимо обычного приветствия, будет также выведено "Hello!".
Разъяснивший Python
6 908
Конвертируем данные и файлы в PDF
Делимся новым циклом видеоматериалов, посвященный работе с текстовыми документами. В первой части автор рассказывает, как конвертируются данные и файлы в PDF с помощью Python.
Смотреть...
Разъяснивший Python
6 908
Когда типизация делает больно: как у нас появился статический анализатор
Язык программирования Python в силу своей динамичности может легко создать ситуацию, когда статический анализатор не может вывести типы и, как следствие, часть проверок отключается. В этой статье автор подробно расскажет о проблеме в разработке системы управления выделенными серверами.
Читать...
Разъяснивший Python
6 908
Работаем с итерируерыми объектами
Все мы начинали писать на Python примерно одинаково: создавали пустой список, запускали цикл for, проверяли условие через if и делали .append(). Это надежно, предсказуемо, но по мере роста кодовой базы такие конструкции начинают утомлять. В этой статье автор подробно разбирает встроенный инструментарий для работы с итерируемыми объектами.
Читать...
Разъяснивший Python
6 908
Вывод строки по отдельным символам
Иногда при работе со строками нам нужны отдельные буквы. В таких случаях мы можем использовать цикл for для перебора символов и их печати.
Разъяснивший Python
6 908
Метод опорных векторов (SVM): подходы, принцип работы и реализация с нуля на Python
Метод опорных векторов — мощный и универсальный набор алгоритмов для работы с данными любой формы, применяемый не только для задач классификации и регрессии, но и также для выявления аномалий. В этой статье автор рассмотрит основные подходы к созданию SVM, принцип работы, а также реализацию с нуля его наиболее популярных разновидностей.
Читать...
Разъяснивший Python
6 908
Repost from Находки Программиста
📣 Подушка ортопедическая для сидения на стул с эффектом памяти
Цена: ~1000 руб. (без скидки 4900 руб.)
Доставка: бесплатная
🖱 Заказать
Ортопедическая подушка La fete является отличным средством улучшения качества жизни. Она изготовлена из плотного материала пенополиуретан с эффектом памяти.
Подушка поддерживает правильную позицию тела и уменьшает нагрузку на суставы.
#подушка #кресло
Больше полезных товаров в Находки Программиста
6 908
Backpressure в async Python-сервисах: как bounded queues, лимиты конкуренции и таймауты останавливают cascading failure
Это не микрооптимизация, а механизм выживания backend-сервиса под нагрузкой. В production проблема часто появляется на медленном downstream: таски плодятся, память растет, клиенты ретраят, и падает уже цепочка сервисов.
Очередь не должна быть бесконечной
asyncio.Queue() без maxsize часто превращает память процесса в скрытый буфер аварии. Делайте очередь bounded и решайте, что делать при переполнении: ждать, вернуть 429/503 или отбросить низкоприоритетную работу.
Лимитируйте конкуренцию
Async не означает “можно запустить 100k запросов к API или базе”.
queue = asyncio.Queue(maxsize=1000)
limit = asyncio.Semaphore(50)
async def submit(item):
try:
queue.put_nowait(item)
except asyncio.QueueFull:
raise Overloaded()
async def worker():
while True:
item = await queue.get()
try:
async with limit:
await asyncio.wait_for(6 908
Объяснение:
copy.copy делает поверхностную копию. Вложенные списки остаются теми же объектами. В результате будет [[1, 2, 99], [3, 4]]
Разъяснивший Python
6 908
Курс по FastAPI на Python для начинающих
В этом видео автор делает полный разбор фреймворка FastAPI на языке Python с первых строчек до деплоя на реальный сервер.
Смотреть...
Разъяснивший Python
6 908
Метод remove() - помощь в удаление элемента из списка
Списк состоит из строк и целых чисел. Есть повторяющиеся элементы: строка «Mars» и число 12. Задаём отрезок и с помощью метода remove чистим список.
Разъяснивший Python
6 908
Нейросети уже заменяют целые контент-команды. Но пока этим пользуются не все.
Пока одни тратят недели на дизайнеров, копирайтеров и съемки — другие делают продающий контент через нейросети за пару часов. А бизнес платит за это десятки тысяч, даже без опыта.
Сегодня с ИИ за вечер можно сделать:
— стильные рекламные визуалы
— продающие тексты
— персонажей и маскотов
— контент для соцсетей и карточек товаров
Освоить базовый навык можно за 3 для без сложных программ. На бесплатном мини-курсе вам покажут, как работать с ИИ так, чтобы получать качественный контент, который можно использовать для себя или продавать клиентам.
👉 Пока многие только смотрят ИИ-контент — вы можете начать его создавать. Переходите по ссылке и забирайте бесплатный доступ.
Реклама. Информация о рекламодателе по ссылкам в посте.
6 908
Как программисту найти работу с релокацией
В этом ролике автор поделится полезной информацией по трудоустройству заграницей и успешной релокации.
Смотреть...
Разъяснивший Python
6 908
Работа с поверхностными и глубокими копиями в Python
В этой статье объясняется как делать копии списков Python, массивов NumPy и датафреймов Pandas при помощи операций получения срезов, списочного индексирования (fancy indexing) и логического (boolean indexing). Эти операции очень часто используются при анализе данных и должны рассматриваться всерьёз, поскольку ошибочные предположения могут привести к падению быстродействия или неожиданным результатам.
Читать...
Разъяснивший Python
6 908
Пишем свой GraphQL клиент на Python
Эта статья написана как пошаговое руководство по созданию своего GraphQL клиента на Python с нуля, где автор демонстрирует проблемы, возникающие на этом пути. Для наглядности будем использовать открытую схему github GraphQL API.
Читать...
Разъяснивший Python
6 908
Модуль tkinter: Как использовать HTML?
Продолжаем делиться циклом видеоматериалов, благодаря которому ты научишься делать красивые интерфейсы с помощью tkinter. В этот раз автор показывает, как использовать HTML внутри tkinter.
Смотреть...
Разъяснивший Python
