code: def close_threads(self, parent):
          
          logger.debug("Call ThreadManager's 'close_threads'")
          if parent is None:
              # Closing all threads
              self.pending_threads = []
              threadlist = []
              for threads in list(self.started_threads.values()):
                  threadlist += threads
          else:
              parent_id = id(parent)
              self.pending_threads = [(_th, _id) for (_th, _id)
                                      in self.pending_threads
                                      if _id != parent_id]
              threadlist = self.started_threads.get(parent_id, [])
          for thread in threadlist:
              logger.debug("Waiting for thread %r to finish" % thread)
              while thread.isRunning():
                  # We can't terminate thread safely, so we simply wait...
                  QApplication.processEvents()
docs: Close threads associated to parent_id