title: Python threading self._stop() 'Event' object is not callable
body: <p>Trying a "stoppable" thread from <a href="https://stackoverflow.com/a/325528/1619432">https://stackoverflow.com/a/325528/1619432</a> like so:</p>
  
  <pre><code>import sys
  import threading
  import time
  import logging
  
  class StoppableThread(threading.Thread):
      """Thread class with a stop() method. The thread itself has to check
      regularly for the stopped() condition."""
  
      def __init__(self):
          print( "base init", file=sys.stderr )
          super(StoppableThread, self).__init__()
          self._stop = threading.Event()
  
      def stop(self):
          print( "base stop()", file=sys.stderr )
          self._stop.set()
  
      def stopped(self):
          return self._stop.is_set()
  
  
  class datalogger(StoppableThread):
      """
      """
  
      import time
  
      def __init__(self, outfile):
        """
        """
        StoppableThread.__init__(self)
        self.outfile = outfile
        print( "thread init", file=sys.stderr )
  
      def run(self):
        """
        """
        print( "thread running", file=sys.stderr )
        while not self.stopped():
          print( self.outfile , file=sys.stderr)
          time.sleep(0.33)
        print( "thread ending", file=sys.stderr )
  
  
  test = datalogger("test.txt")
  test.start()
  time.sleep(3)
  logging.debug("stopping thread")
  test.stop()
  logging.debug("waiting for thread to finish")
  test.join()
  </code></pre>
  
  <p>gives following output with error:</p>
  
  <pre><code>&gt; demo.py
  base init
  thread init
  thread running
  test.txt
  test.txt
  test.txt
  test.txt
  test.txt
  test.txt
  test.txt
  test.txt
  test.txt
  test.txt
  base stop()
  thread ending
  Traceback (most recent call last):
    File "demo.py", line 54, in &lt;module&gt;
      test.join()
    File "C:\Python34\lib\threading.py", line 1061, in join
      self._wait_for_tstate_lock()
    File "C:\Python34\lib\threading.py", line 1079, in _wait_for_tstate_lock
      self._stop()
  TypeError: 'Event' object is not callable
  </code></pre>
  
  <p>Could someone please explain what I am doing wrong?</p>
  
  <p>Doc: <a href="https://docs.python.org/3.4/library/threading.html#event-objects" rel="nofollow noreferrer">https://docs.python.org/3.4/library/threading.html#event-objects</a></p>