Тайм-аут Python

Я искал повсюду хороший сценарий таймаута, который может убить поток, если он активен более чем на X секунд, но все примеры, которые я видел, имеют недостатки, которые не всегда останавливают поток. Использование thread.join (x) заканчивается победой в цели, являющейся потоком.

Единственным достойным примером, который я нашел, является Timeout на вызове функции, и он не лишен недостатков.

Кто-нибудь знает лучший способ сделать это?

2 Solutions collect form web for “Тайм-аут Python”

См. Мой ответ на python: как отправлять пакеты в многопоточном потоке, а затем сам поток убить – есть фрагмент с классом InterruptableThread и пример, который убивает другой поток после таймаута – именно то, что вы хотите.

Существует также аналогичный рецепт Python при активизации.

Я знаю, что это может быть не то, что вы хотите, но считаете ли вы сигнальный подход? Тайм-аут вызова функции http://docs.python.org/library/signal.html#example

Вы можете установить сигнал тревоги в начале выполнения потока, а затем остановить поток в обработчике сигнала.

Python - лучший язык программирования в мире.