import signal signal.pthread_kill(thread_id, signalnum)
thread_id
- номер целевого потока,signalnum
- номер сигнала.Функция signal.pthread_kill()
отправляет сигнал signalnum
в поток thread_id
, другой поток в том же процессе, что и вызывающая сторона.
Целевой поток может выполнять любой код Python или нет. Однако, если целевой поток выполняет интерпретатор Python, обработчики сигналов Python будут выполняться основным потоком (смотрите подраздел "Сигналы и потоки"). Следовательно, единственной точкой отправки сигнала в конкретный поток Python является принудительное завершение работающего системного вызова с помощью InterruptedError
.
Используйте функцию threading.get_ident()
или атрибут ident
объектов threading.Thread
, чтобы получить подходящее значение для аргумента thread_id
.
Если аргумент signalnum
равен 0, то сигнал не отправляется, но проверка ошибок все еще выполняется. Такое поведение можно использовать для проверки, работает ли целевой поток.
Вызывает событие аудита signal.pthread_kill
с аргументами thread_id
, signalnum
.
Доступность: Unix. Для получения дополнительной информации смотрите справочную страницу pthread_kill(3)
.
Смотрите также функцию os.kill().
import threading, signal, sys def handler(signum, frame): sys.exit(3) >>> signal.signal(signal.SIGUSR1, handler) # Выходим из интерпретатора Python с кодом 3 >>> signal.pthread_kill(threading.get_ident(), signal.SIGUSR1)