멀티 스레딩 파이썬 프로그램에서 특정 신호 처리기를 실행하고 싶습니다. 내 신호 처리기가 주 스레드와 내가 만든 다른 스레드 (thread_1)에 대해 호출되었음을 알았습니다. 어쨌든 thread_1에 대해서만 시그널 핸들러를 실행해야합니까? 또는 신호 처리기의 호출 스레드의 스레드 ID를 알기 위해 어쨌든 있습니까? 그것은 주 스레드 또는 thread_1입니까? 멀티 스레드 용 파이썬 신호
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'
는 출력 얻었다 : 당신이 (thread_1 메인 스레드에 대한 다른 하나) 두 번 호출되는 핸들러를 신호 수 있듯이
Creating thread
Press Ctrl+C
hello bob
AAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAA
^CYou pressed Ctrl+C!
You pressed Ctrl+C!
9
3
을, 나는 위의 질문으로, 나는 핸들러 만 실행하고 싶습니다 thread_1 또는 심지어 호출 스레드의 thread_id를 얻는 방법을 찾으십니까?