Встречается на 1% собеседований по Python
Как узнать, что параллельный процесс не завис в Python
Для мониторинга зависших процессов в Python можно использовать несколько подходов:
- Таймауты – установить максимальное время выполнения:
python
from multiprocessing import Process
import time
def worker():
time.sleep(10) # Имитация зависания
p = Process(target=worker)
p.start()
p.join(timeout=5) # Ждем 5 секунд
if p.is_alive():
p.terminate() # Принудительно завершаем-
Проверка активности – регулярный обмен сигналами между процессами через очередь или событие.
-
Внешний мониторинг – использование специализированных инструментов:
psutilдля проверки CPU/памяти- Системные утилиты (
top,htop) - Оркестраторы (Celery, Airflow)
- Декораторы/менеджеры контекста – обертки с автоматическим таймаутом:
python
from functools import wraps
import signal
class TimeoutError(Exception):
pass
def timeout(seconds):
def decorator(func):
@wraps(func)
def wrapper(*args, **kwargs):
signal.signal(signal.SIGALRM, lambda s, f: (_ for _ in ()).throw(TimeoutError()))
signal.alarm(seconds)
try:
result = func(*args, **kwargs)
finally:
signal.alarm(0)
return result
return wrapper
return decoratorКритически важно предусмотреть механизм очистки ресурсов при принудительном завершении.

Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
офферы быстрее!
Попробовать бесплатно
Следующий вопрос
Это единственный вопрос по вашему фильтру
Похожие вопросы
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы