LINUX.ORG.RU

Убить поток исполнения в Python


0

0

Понадобилось поставить защиту от потенциального зависания/зацикливания в threading.Trhread. Нашел вот такое вот решение:

http://mail.python.org/pipermail/python-list/2004-May/260937.html

http://www.velocityreviews.com/forums/t330554-kill-a-thread-in-python.html

В принципе, на безрыбье и это подойдет. Однако, в дискуссии народ правильно заметил: в продакшне ставить трассировку на исполнение каждой строки -- это явный оверкилл. Правда, с тех пор прошло уже больше трех лет. Никто не знает, не появилось ли с тех пор каких-нибудь более приличных и простых решений?

Ну т.к. питоновские нитки пашут поверх ниток ОС, можно использовать функции завершения ниток для данной платформы.

Учитывая что живых платформ всего две :-), то это не должно быть слишком сложным.

Если мне не изменяет память у QThread из Qt был метод kill() или что-то такое. QThread есть в PyQt.

И всё таки нитки прибивать это последнее дело. Если нитка зависла то что уж мелочится, можно уже и весь процесс прибить :-)

redvasily
()
Ответ на: комментарий от redvasily

> Если мне не изменяет память у QThread из Qt был метод kill() или что-то такое. QThread есть в PyQt.

Ну, мне в Пифагоре уже подсказали аналогичное решение, но без Qt. Хотя там тоже убить можно только на границе инструкции.

> И всё таки нитки прибивать это последнее дело. Если нитка зависла то что уж мелочится, можно уже и весь процесс прибить :-)

А если это боевой сервлет? Рестартовать весь сервер?

eugine_kosenko ★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.