code: def _wait_threads(self):
          
          # Note that you need two loops, since you can't say which
          # thread will get each sentinel
          for t in self._threads:
              self._to_fetch.put(None)    # sentinel
          for t in self._threads:
              t.join()
          self._threads = []
docs: Tell all the threads to terminate (by sending a sentinel value) and
          wait for them to do so.