Встречается на собеседованиях • сегодня
Как узнать, что параллельный процесс не завис в 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
интервью вопросы и ответы