Остановка потока в питоне - PullRequest
1 голос
/ 08 февраля 2010

Я создаю тему в моем приложении Python с thread.start_new_thread.

Как мне остановить его, если он не закончился через три секунды?

Ответы [ 4 ]

2 голосов
/ 08 февраля 2010

Вы не можете сделать это напрямую. В любом случае, прерывание потока не является хорошей практикой - лучше подумайте об использовании механизмов синхронизации, которые позволяют прерывать поток «мягким» способом.

Но демонические потоки будут автоматически прерваны, если не останутся недемонические потоки (например, если закончится единственный основной поток). Может быть, это то, что вы хотите.

1 голос
/ 08 февраля 2010

Как отмечено в связанном вопросе , вы можете вызвать исключение с помощью ctypes.pythonapi, но не во время ожидания системного вызова.

1 голос
/ 08 февраля 2010

Если вам действительно нужно это сделать (например, поток вызывает код, который может зависать вечно), тогда попробуйте переписать код, чтобы запустить процесс с помощью модуля многопроцессорной обработки. Затем вы можете убить процесс с помощью метода Process.terminate (). Конечно, для этого вам понадобится 2.6 или более поздняя версия.

1 голос
/ 08 февраля 2010

Вы не можете. Нити не могут быть убиты извне. Единственное, что вы можете сделать, это добавить способ попросить поток выйти. Очевидно, что вы не сможете сделать это, если поток заблокирован в каком-то вызове системы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...