Я хотел бы выполнить определенный обработчик сигнала в многопоточной программе python. Я заметил, что мой обработчик сигнала вызван для основного потока и другого потока (thread_1), который я создал. Есть ли способ выполнить обработчик сигнала только для thread_1? Или все равно знать идентификатор потока вызывающего потока обработчика сигнала? это основной поток или thread_1?сигналы python для многопотоков
import signal
import sys
from multiprocessing import Process
from time import sleep
x = 3;
def f(name):
print 'hello', name
while(1):
sleep (1)
print "AAAAAAAAAAAAAAAAAAAAAAAAA"
def signal_handler(signal, frame):
global x
print 'You pressed Ctrl+C!'
print x
sys.exit(0)
if __name__ == '__main__':
signal.signal(signal.SIGINT, signal_handler)
print 'Creating thread'
p = Process(target=f, args=('bob',))
p.start()
print 'Press Ctrl+C'
x += 6
signal.pause()
print 'After press CTRL+C'
Есть выход:
Creating thread
Press Ctrl+C
hello bob
AAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAA
^CYou pressed Ctrl+C!
You pressed Ctrl+C!
9
3
Как вы можете сигнализировать обработчик вызывается дважды (один для основного потока, а другой для thread_1), и, как я спросил выше, я хотел бы выполнить только обработчик для thread_1 или даже найти способ получить thread_id вызывающего потока?