On May 7, 5:00 am, [EMAIL PROTECTED] wrote: > Hi Guys, > > during testing of my project on FreeBSD I've discovered stange > 'feature' of time.sleep(). It works if single thread is running, but > when multi-threaded, the SIGINT signal seems not to be handled in same > way. > > I've found three discussion about similar behavior with os.system() > but so far none of the suggested patches worked. > > I've limited test to following code: > > import time > import sys > import threading > > class MyThread(threading.Thread): > def __init__(self): > super(MyThread, self).__init__() > self.start() > > def run(self): > while True: > try: > time.sleep(10) > except KeyboardInterrupt: > print 'thread keyboard interrupt' > > def main(): > my = MyThread() > > while True: > try: > time.sleep(5) > except KeyboardInterrupt: > print 'got it' > > if __name__ == '__main__': > main() > > Any suggestions?
Python doesn't support interrupting non-main threads with a signal. You have to use something else you can manually end, like a Condition with a timeout or a poll of a fd with a timeout. -- http://mail.python.org/mailman/listinfo/python-list