Потоки и процессы (не смешивать) / Станислав Рудаков / DataRobot [Python Meetup 16.08.2018]
Data selfMADE
0:00 / 0:00
Потоки и процессы (не смешивать) / Станислав Рудаков / DataRobot [Python Meetup 16.08.2018]
4 699 просмотров · 7 лет назад
Data selfMADE
3,6 тыс. подписчиков
4 699 просмотров · 7 лет назад
Мы живём в время, когда у нас есть высокоуровневые фреймворки «на каждый чих», и всё равно умудряемся ловить баги, про которые «знают все, кроме тебя». В этом докладе Станислав Рудаков (DataRobot) разбирает реальный кейс дебага Python‑приложения, где из‑за сочетания потоков, процессов и логгера всё намертво висло — и показывает, почему «нельзя просто взять и починить Python».
В видео на живом примере вы увидите:
Чем на самом деле отличаются потоки и процессы в Unix‑системах
Как fork копирует память и почему это взрывается, если в родительском процессе уже захвачен лок
Как логирование и поток внутри библиотеки могут привести к вечному дедлоку после fork()
Как использовать gdb и core‑дампы, чтобы разбираться в зависаниях, когда Python‑стек уже не помогает
Какие есть практические способы избежать таких багов: порядок запуска fork/потоков, отказ от потоков, отключение локов после fork
Примерная структура доклада:
00:00 — История «травмы»: как обычный компонент повесил коллегам прод
02:30 — Демка: простой пример с потоком, процессом и логгером, который «иногда зависает»
08:00 — Разбор симптомов: процесс не джоинится, логов нет, приложение «висит»
12:30 — gdb, debug‑символы и разбор стека на уровне C
20:00 — Что происходит при fork: память, потоки, локи и почему один лок может убить всё приложение
27:00 — Где ещё такое всплывает: драйверы БД, logging, сторонние библиотеки и многопроцессные пайплайны
31:00 — Стратегии защиты: порядок операций, отказ от потоков, отключение локов после fork и мониторинг
После просмотра вы сможете:
Понимать, чем реально отличаются потоки и процессы в Python‑программах под Linux
Узнавать по симптомам, когда у вас дедлок из‑за логгера, потоков и fork
Использовать gdb и core‑дампы как рабочий инструмент, а не страшный «низкоуровневый ад»
Проектировать код так, чтобы не создавать себе подобные «мины замедленного действия»
Напишите в комментариях:
Приходилось ли вам ловить похожие «мистические» зависания в проде и чем они оказались на самом деле?
Используете ли вы многопоточность, multiprocessing или предпочитаете асинхронщину (asyncio, gevent)?
Хотели бы вы отдельный разбор по gdb, core‑дампам или по типичным проблемам с fork + threads в Python?
Поддержите доклад лайком, подпишитесь на канал и напишите в комментариях, какую тему вы хотите чтобы мы разобрали в следующих видео — это помогает алгоритмам чаще показывать такие технические доклады разработчикам.
#python #multithreading #multiprocessing #debugging #concurrency