Python Glossary English

Python 3.3+Linux · macOSsignalфункция

signal.pthread_kill()

отправка сигналов

Посылает сигнал конкретному потоку своего процесса по его идентификатору. Только Unix (Linux, macOS).

Синтаксис

signal.pthread_kill(thread_id, signalnum)

Python-обработчик всё равно выполнится в главном потоке, а не в целевом: сигнал лишь прерывает системный вызов того потока (InterruptedError на уровне C). Остановить так поток с Python-кодом нельзя. Сигнал 0 ничего не шлёт и только проверяет, жив ли поток. Идентификатор — threading.get_ident() или Thread.ident, не native_id.

Примеры

import signal, threading
seen = []
def handler(signum, frame):
    seen.append(threading.current_thread().name)
old = signal.signal(signal.SIGUSR1, handler)
signal.pthread_kill(threading.get_ident(), signal.SIGUSR1)
print(seen)  # → ['MainThread']
print(signal.pthread_kill(threading.get_ident(), 0))  # → None — поток жив
signal.signal(signal.SIGUSR1, old)

См. также

Открыть в полном глоссарииdocs.python.orgСообщить о неточности