Python Glossary English

Python 3.3+faulthandlerфункция

faulthandler.dump_traceback_later()

дамп по таймеру

Заводит сторожевой таймер: если за timeout секунд его не отменили, стек всех потоков записывается в файл.

Синтаксис

faulthandler.dump_traceback_later(timeout, repeat=False, file=sys.stderr, exit=False)

Главный инструмент против зависаний: поставили таймер перед подозрительным местом, отменили после — и при зависании увидите, где именно стоит программа. Повторный вызов не добавляет второй таймер, а заменяет первый. exit=True после дампа завершает процесс через _exit() без сброса буферов и блоков finally — недописанные файлы останутся недописанными. repeat=True печатает стек каждые timeout секунд.

Примеры

import faulthandler, time
with open('hang.txt', 'w') as f:
    faulthandler.dump_traceback_later(0.1, file=f)
    time.sleep(0.3)
print(open('hang.txt').read().splitlines()[0])  # → Timeout (0:00:00.100000)!

См. также

Открыть в полном глоссарииdocs.python.orgСообщить о неточности