I'm a little confused about threading in Python.  Here is a sample class I've written for monitoring for events.  Included in the comments are a couple of questions, specifically:
 
   (1) can I use super() in the constructor, or is direct call to base class preferred?
   (2) do I need to sleep in the run() method?  If so, why?  It seems to improve my programs responsiveness
   (3) what happens after run() finishes-- does the thread die, get suspended, go away?  Should I try to force the thread into one of these states, and if so how?
 
Any help is appreciated!
Thanks,
Marcus
 
 
class Monitor(threading.Thread):
   def __init__(self):
      threading.Thread.__init__(self)         # would super() also work here?  which is preferred
      self.undetected = True                    # presumably, when the event occurs it sets this attribute to False
 
   def run(self):
      print "looking for event"
      while self.undetected is True:
         time.sleep(0.1)                            # another minor point: why do I need to sleep here?
      self.processEvent()
      # what happens here-- does the thread die?
 
   def processEvent(self):
      print "yeah-- event detected"
 
_______________________________________________
Tutor maillist  -  [email protected]
http://mail.python.org/mailman/listinfo/tutor

Reply via email to