У меня Python 2.6 на MacOS X и многопоточная операция. После тестирования кода отлично работает и выключается приложение на Ctrl-C:Python игнорирует SIGINT в многопоточных программах - как это исправить?
import threading, time, os, sys, signal
def SigIntHandler(signum, frame) :
sys.exit(0)
signal.signal(signal.SIGINT, SigIntHandler)
class WorkThread(threading.Thread) :
def run(self) :
while True :
time.sleep(1)
thread = WorkThread()
thread.start()
time.sleep(1000)
Но если я изменить только одну строку, добавив некоторую реальную работу на рабочий поток, приложение никогда не оканчиваются на Ctrl-C:
import threading, time, os, sys, signal
def SigIntHandler(signum, frame) :
sys.exit(0)
signal.signal(signal.SIGINT, SigIntHandler)
class WorkThread(threading.Thread) :
def run(self) :
while True :
os.system("svn up") # This is really slow and can fail.
time.sleep(1)
thread = WorkThread()
thread.start()
time.sleep(1000)
Можно ли исправить это, или питон не предназначен для использования с резьбой?
Я обновил свой ответ. –