title: Why does the instance need to be recreated when restarting a thread?
body: <p>Imagine the following classes:</p>
  
  <pre><code>Class Object(threading.Thread):
      # some initialisation blabla
      def run(self):
          while True:
              # do something
              sleep(1)
  
  class Checker():
      def check_if_thread_is_alive(self):
          o = Object()
          o.start()
  
          while True:
              if not o.is_alive():
                  o.start()
  </code></pre>
  
  <p>I want to restart the thread in case it is dead. This doens't work. Because the threads can only be started once. First question. Why is this?</p>
  
  <p>For as far as I know I have to recreate each instance of <code>Object</code> and call <code>start()</code> to start the thread again. In case of complex <code>Object</code>s this is not very practical. I've to read the current values of the old <code>Object</code>, create a new one and set the parameters in the new object with the old values. Second question: Can this be done in a smarter, easier way?</p>