Перейти к содержимому

Потоки и процессы (не смешивать)​ / Станислав Рудаков / 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