parameters: (self, timeout=None)
return_statement: return True
docstring: Wait until all items in the queue have been retrieved and processed,
          or until 'timeout' seconds have passed.
  
          The count of unfinished tasks is incremented whenever an item is added
          to the queue. The count is decremented whenever task_done() is called
          to indicate that all work on the retrieved item was completed.
  
          When the number of unfinished tasks reaches zero, True is returned.
          If the number of unfinished tasks remains nonzero after 'timeout'
          seconds have passed, then False is returned.
docstring_summary: Wait until all items in the queue have been retrieved and processed,
          or until 'timeout' seconds have passed.
docstring_tokens: Wait until all items in the queue have been retrieved and processed or until timeout seconds have passed .
function: def join(self, timeout=None):
          """
          Wait until all items in the queue have been retrieved and processed,
          or until 'timeout' seconds have passed.
  
          The count of unfinished tasks is incremented whenever an item is added
          to the queue. The count is decremented whenever task_done() is called
          to indicate that all work on the retrieved item was completed.
  
          When the number of unfinished tasks reaches zero, True is returned.
          If the number of unfinished tasks remains nonzero after 'timeout'
          seconds have passed, then False is returned.
          """
          with self.all_tasks_done:
              if timeout is None:
                  while self.unfinished_tasks:
                      self.all_tasks_done.wait()
              elif timeout < 0:
                  raise ValueError("timeout must be a nonnegative number")
              else:
                  # Pass timeout down to lock acquisition
                  deadline = time.time() + timeout
                  while self.unfinished_tasks:
                      remaining = deadline - time.time()
                      if remaining <= 0.0:
                          return False
                      self.all_tasks_done.wait(remaining)
          return True
function_tokens: def join ( self , timeout = None ) : with self . all_tasks_done : if timeout is None : while self . unfinished_tasks : self . all_tasks_done . wait ( ) elif timeout < 0 : raise ValueError ( "timeout must be a nonnegative number" ) else : # Pass timeout down to lock acquisition deadline = time . time ( ) + timeout while self . unfinished_tasks : remaining = deadline - time . time ( ) if remaining <= 0.0 : return False self . all_tasks_done . wait ( remaining ) return True