code: def startall(self, wait=False, **kwdargs):
          
          self.logger.debug("startall called")
          with self.regcond:
              while self.status != 'down':
                  if self.status in ('start', 'up') or self.ev_quit.is_set():
                      # For now, abandon additional request to start
                      self.logger.error("ignoring duplicate request to start thread pool")
                      return
  
                  self.logger.debug("waiting for threads: count=%d" %
                                    self.runningcount)
                  self.regcond.wait()
  
              #assert(self.status == 'down')
              if self.ev_quit.is_set():
                  return
  
              self.runningcount = 0
              self.status = 'start'
              self.workers = []
              if wait:
                  tpool = self
              else:
                  tpool = None
  
              # Start all worker threads
              self.logger.debug("starting threads in thread pool")
              for i in range(self.numthreads):
                  t = self.workerClass(self.queue, logger=self.logger,
                                       ev_quit=self.ev_quit, tpool=tpool,
                                       **kwdargs)
                  self.workers.append(t)
                  t.start()
  
              # if started with wait=True, then expect that threads will register
              # themselves and last one up will set status to "up"
              if wait:
                  # Threads are on the way up.  Wait until last one starts.
                  while self.status != 'up' and not self.ev_quit.is_set():
                      self.logger.debug("waiting for threads: count=%d" %
                                        self.runningcount)
                      self.regcond.wait()
              else:
                  # otherwise, we just assume the pool is up
                  self.status = 'up'
              self.logger.debug("startall done")
docs: Start all of the threads in the thread pool.  If _wait_ is True
          then don't return until all threads are up and running.  Any extra
          keyword arguments are passed to the worker thread constructor.