python - threading ignores KeyboardInterrupt exception -


i'm running simple code:

import threading, time  class reqthread ( threading.thread ):   def __init__ (self):     threading.thread.__init__(self)    def run ( self ):     in range(0,10):       time.sleep(1)       print '.'  try:   thread=reqthread()   thread.start() except (keyboardinterrupt, systemexit):   print '\n! received keyboard interrupt, quitting threads.\n' 

but when run it, prints

$ python prova.py   ` . . ^c. . . . . . . . exception keyboardinterrupt in <module 'threading' '/usr/lib/python2.6/threading.pyc'> ignored ` 

in fact python thread ignore ctrl+c keyboard interrupt , doesn't print received keyboard interrupt. why? wrong code?

try

try:   thread=reqthread()   thread.daemon=true   thread.start()   while true: time.sleep(100) except (keyboardinterrupt, systemexit):   print '\n! received keyboard interrupt, quitting threads.\n' 

without call time.sleep, main process jumping out of try...except block early, keyboardinterrupt not caught. first thought use thread.join, seems block main process (ignoring keyboardinterrupt) until thread finished.

thread.daemon=true causes thread terminate when main process ends.


Comments

Popular posts from this blog

c++ - Convert big endian to little endian when reading from a binary file -

C#: Application without a window or taskbar item (background app) that can still use Console.WriteLine() -

unicode - Are email addresses allowed to contain non-alphanumeric characters? -