code: def mpi_fork(n, bind_to_core=False):
      """
      Re-launches the current script with workers linked by MPI.
  
      Also, terminates the original process that launched it.
  
      Taken almost without modification from the Baselines function of the
      `same name`_.
  
      .. _`same name`: https://github.com/openai/baselines/blob/master/baselines/common/mpi_fork.py
  
      Args:
          n (int): Number of process to split into.
  
          bind_to_core (bool): Bind each MPI process to a core.
      """
      if n <= 1:
          return
      if os.getenv("IN_MPI") is None:
          env = os.environ.copy()
          env.update(
              MKL_NUM_THREADS="1", OMP_NUM_THREADS="1", IN_MPI="1"
          )
          args = ["mpirun", "-np", str(n)]
          if bind_to_core:
              args += ["-bind-to", "core"]
          args += [sys.executable] + sys.argv
          subprocess.check_call(args, env=env)
          sys.exit()
  
file_path: spinningup/spinup/utils/mpi_tools.py
imports: from mpi4py import MPI
  import os, subprocess, sys
  import numpy
label_desc: Use image node_id 1 for calling a global function with example usage: mpi_fork(n, bind_to_core) without return types