class_docstr: Launches processes that run a given function in parallel, and joins them all at the end.
  
  The main process in which this launcher is invoked creates N so-called worker processes (using
  :func:`torch.multiprocessing.start_processes`) that run the given function.
  Worker processes have a rank that ranges from 0 to N - 1.
  
  Note:
      - This launcher requires all objects to be pickleable.
      - It is important that the entry point to the program/script is guarded by ``if __name__ == "__main__"``.
      - With start method 'fork' the user must ensure that no CUDA context gets created in the main process before
        the launcher is invoked. E.g., one should avoid creating cuda tensors or calling ``torch.cuda.*`` functions
        before calling ``Trainer.fit``.
  
  Args:
      strategy: A reference to the strategy that is used together with this launcher.
      start_method: The method how to start the processes.
          - 'spawn': The default start method. Requires all objects to be pickleable.
          - 'fork': Preferable for IPython/Jupyter environments where 'spawn' is not available. Not available on
            the Windows platform for example.
          - 'forkserver': Alternative implementation to 'fork'.
code: def is_interactive_compatible(self) -> bool:
      # The start method 'spawn' is not supported in interactive environments
      # The start method 'fork' is the only one supported in Jupyter environments, with constraints around CUDA
      # initialization. For more context, see https://github.com/Lightning-AI/lightning/issues/7550
      return self._start_method == "fork"
  
imports: import itertools
  import os
  from dataclasses import dataclass
  from multiprocessing.queues import SimpleQueue
  from textwrap import dedent
  from typing import TYPE_CHECKING, Any, Callable, Dict, Literal, Optional
  import torch
  import torch.backends.cudnn
  import torch.multiprocessing
  from lightning_utilities import apply_to_collection
  from torch.nn import Module
  from typing_extensions import override
  from lightning.fabric.accelerators.cpu import CPUAccelerator
  from lightning.fabric.strategies.launchers.launcher import _Launcher
  from lightning.fabric.utilities.apply_func import move_data_to_device
  from lightning.fabric.utilities.distributed import _set_num_threads_if_needed
  from lightning.fabric.utilities.imports import _IS_INTERACTIVE
  from lightning.fabric.utilities.seed import _collect_rng_states, _set_rng_states
label_desc: Use image node_id 2 for calling the _MultiProcessingLauncher obj's underlying member method code with example usage: obj.is_interactive_compatible() and returns: unknown