code: def run(self):
          
          while True:
              if self._dismissed.isSet():
                  # we are dismissed, break out of loop
                  break
  
              # get next work request.
              request = self._requests_queue.get()
              # print 'Worker thread %s running request %s' %(self, request)
  
              if self._dismissed.isSet():
                  # we are dismissed, put back request in queue and exit loop
                  self._requests_queue.put(request)
                  break
              try:
                  result = request.callable(*request.args, **request.kwds)
                  if request.callback:
                      request.callback(request, result)
                  del result
                  self._requests_queue.task_done()
              except:
                  request.exception = True
                  if request.exc_callback:
                      request.exc_callback(request)
                  self._requests_queue.task_done()
              finally:
                  request.self_destruct()
docs: Repeatedly process the job queue until told to exit.