code: def _adjust_thread_count(self):
      # if idle threads are available, don't spin new threads
      if self._idle_semaphore.acquire(timeout=0):
          return
  
      # When the executor gets lost, the weakref callback will wake up
      # the worker threads.
      def weakref_cb(_, q=self._work_queue):
          q.put(None)
  
      num_threads = len(self._threads)
      if num_threads < self._max_workers:
          thread_name = "%s_%d" % (
              self._thread_name_prefix or self,
              num_threads,
          )
          t = threading.Thread(
              name=thread_name,
              target=_worker,
              args=(
                  weakref.ref(self, weakref_cb),
                  self._work_queue,
                  self._initializer,
                  self._initargs,
              ),
          )
          t.start()
          self._threads.add(t)
          _threads_queues[t] = self._work_queue
  
imports: from concurrent.futures import _base
  import itertools
  import queue
  import threading
  import types
  import weakref
  import os
label_desc: Use image node_id 3 for calling the ThreadPoolExecutor obj's underlying member method code with example usage: obj._adjust_thread_count() without return types