code: def _run_training_subprocesses(num_workers, original_args):
      workers = []
      _LG.info("Spawning %s workers", num_workers)
      for i in range(num_workers):
          worker_arg = [
              "--worker-id",
              f"{i}",
              "--num-workers",
              f"{num_workers}",
          ]
          device_arg = (
              ["--device-id", f"{i}"]
              if torch.cuda.is_available()
              else []
          )
          command = (
              [sys.executable, "-u", sys.argv[0]]
              + worker_arg
              + device_arg
              + original_args
          )
          _LG.info("Launching worker %s: `%s`", i, " ".join(command))
          worker = subprocess.Popen(command)
          workers.append(worker)
  
      num_failed = 0
      for worker in workers:
          worker.wait()
          if worker.returncode != 0:
              num_failed += 1
      sys.exit(num_failed)
  
file_path: audio/examples/source_separation/train.py
imports: import argparse
  import logging
  import subprocess
  import sys
  import torch
  from utils import dist_utils
label_desc: Use image node_id 3 for calling a global function with example usage: _run_training_subprocesses(num_workers, original_args) without return types