code: def join(self,timeout=None):
          
          if timeout is None:
              for thread in self.__threads:
                  thread.join()
          else:
              deadline = _time() + timeout
              for thread in self.__threads:
                  delay = deadline - _time()
                  if delay <= 0:
                      return False
                  if not thread.join(delay):
                      return False
          return True
docs: Join all threads in this group.
  
          If the optional "timeout" argument is given, give up after that many
          seconds.  This method returns True is the threads were successfully
          joined, False if a timeout occurred.