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Сообщить о неточности