Есть ли способ убить поток в Python?

В Python вы просто не можете убить Thread. Убийство нити устраняет любые гарантии, которые пытаются установить / окончательно блокировать, чтобы вы могли заблокировать блокировки, открыть файлы и т. д. Обычно это плохой шаблон, чтобы убить поток внезапно, на Python и на любом языке.

Лучше вы можете использовать модуль многопроцессорности , который почти то же самое и имеет функцию terminate() для уничтожения процессов. Здесь, чтобы убить процесс, вы можете просто вызвать метод:

 
yourProcess.terminate()  # kill the process!

Python убьет ваш процесс (в Unix через сигнал SIGTERM, в то время как в Windows через вызов TerminateProcess()). Обратите внимание, чтобы использовать его при использовании очереди или трубы! (это может повредить данные в очереди / трубке)

Другим решением является то, что если вы пытаетесь завершить всю программу, вы можете установить поток как «демон». Логическое значение, указывающее, является ли этот поток потоком демона (True) или нет (False). Это необходимо установить перед вызовом start(), иначе RuntimeError будет поднят. Его начальное значение наследуется от создающего потока; основной поток не является потоком демона, и поэтому все потоки, созданные в основном потоке по умолчанию, равны daemon = False. Вся программа Python завершается, когда не осталось живых ничейных нитей.

В Python для этого нет официального API. Но есть API платформы, чтобы убить поток, например. pthread_kill или TerminateThread. Вы можете получить доступ к этому API, например. через pythonwin или через ctypes.

В Python для этого нет официального API. Но есть API платформы, чтобы убить поток, например. pthread_kill или TerminateThread. Вы можете получить доступ к этому API, например. через pythonwin или через ctypes....

Источник: http://net-informations.com/python/iq/kill.htm

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (Пока оценок нет)
Adblock
detector