code: def _build_extensions_parallel(self):
      workers = self.parallel
      if self.parallel is True:
          workers = os.cpu_count()  # may return None
      try:
          from concurrent.futures import ThreadPoolExecutor
      except ImportError:
          workers = None
  
      if workers is None:
          self._build_extensions_serial()
          return
  
      with ThreadPoolExecutor(max_workers=workers) as executor:
          futures = [
              executor.submit(self.build_extension, ext)
              for ext in self.extensions
          ]
          for ext, fut in zip(self.extensions, futures):
              with self._filter_build_errors(ext):
                  fut.result()
  
imports: import contextlib
  import os
  import re
  import sys
  from ..core import Command
  from ..errors import DistutilsOptionError, DistutilsSetupError, CCompilerError, DistutilsError, CompileError, DistutilsPlatformError
  from ..sysconfig import customize_compiler, get_python_version
  from ..sysconfig import get_config_h_filename
  from .._modified import newer_group
  from ..extension import Extension
  from ..util import get_platform
  from distutils._log import log
  from .None import py37compat
  from site import USER_BASE
label_desc: Use image node_id 8 for calling the build_ext obj's underlying member method code with example usage: obj._build_extensions_parallel() without return types