docs: def submit(self, func, *args, **kwargs):
          """Submit a function to the pool, `self.submit(function,arg1,arg2,arg3=3)`"""
  
          with self._shutdown_lock:
              if PY3 and self._broken:
                  raise BrokenProcessPool(
                      "A child process terminated "
                      "abruptly, the process pool is not usable anymore"
                  )
              if self._shutdown_thread:
                  raise RuntimeError("cannot schedule new futures after shutdown")
              callback = kwargs.pop("callback", self.default_callback)
              future = NewFuture(
                  self._timeout,
                  args,
                  kwargs,
                  callback=callback,
                  catch_exception=self.catch_exception,
              )
              w = _WorkItem(future, func, args, kwargs)
              self._pending_work_items[self._queue_count] = w
              self._work_ids.put(self._queue_count)
              self._queue_count += 1
              self._result_queue.put(None)
              self._start_queue_management_thread()
              if PY2:
                  self._adjust_process_count()
              self._all_futures.add(future)
              return future