我有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