我有MacOS X上的Python 2.6和多線程操作。下面的測試代碼工作正常,並關閉應用程序上按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)
是否可以修復它,或python不打算與線程一起使用?
我更新了我的答案。 – 2010-10-26 22:45:16