code: def wait_until_complete(job_list):
          
          complete = [False] * len(job_list)
          wait = 1
          while not all(complete):
              time.sleep(wait)
              for i, job in enumerate(job_list):
                  if not complete[i]:
                      complete[i] = job.is_finished()
                      if not complete[i]:
                          break
              wait = min(wait * 2, 10)
docs: Args: Accepts a list of GPJob objects
  
          This method will not return until all GPJob objects in the list have
          finished running. That us, they are either complete and have resulted in
          an error state.
  
          This method will occasionally query each job to see if it is finished.