class_docstr: Sampler that uses multiprocessing to distribute workers.
  
  The sampler need to be created either from a worker factory or from
  parameters which can construct a worker factory. See the __init__ method
  of WorkerFactory for the detail of these parameters.
  
  Args:
      agents (Policy or List[Policy]): Agent(s) to use to sample episodes.
          If a list is passed in, it must have length exactly
          `worker_factory.n_workers`, and will be spread across the
          workers.
      envs (Environment or List[Environment]): Environment from which
          episodes are sampled. If a list is passed in, it must have length
          exactly `worker_factory.n_workers`, and will be spread across the
          workers.
      worker_factory (WorkerFactory): Pickleable factory for creating
          workers. Should be transmitted to other processes / nodes where
          work needs to be done, then workers should be constructed
          there. Either this param or params after this are required to
          construct a sampler.
      max_episode_length(int): Params used to construct a worker factory.
          The maximum length episodes which will be sampled.
      is_tf_worker (bool): Whether it is workers for TFTrainer.
      seed(int): The seed to use to initialize random number generators.
      n_workers(int): The number of workers to use.
      worker_class(type): Class of the workers. Instances should implement
          the Worker interface.
      worker_args (dict or None): Additional arguments that should be passed
          to the worker.
docstr: Apply updates to the workers and (re)start them.
  
  Args:
      updated_workers (set[int]): Set of workers that don't need to be
          updated. Successfully updated workers will be added to this
          set.
      agent_updates (object): Value which will be passed into the
          `agent_update_fn` before sampling episodes. If a list is passed
          in, it must have length exactly `factory.n_workers`, and will
          be spread across the workers.
      env_updates (object): Value which will be passed into the
          `env_update_fn` before sampling episodes. If a list is passed
          in, it must have length exactly `factory.n_workers`, and will
          be spread across the workers.
docstr_tok: ["Apply","updates","to","the","workers","and","(","re",")","start","them",".","Args",":","updated_workers","(","set","[","int","]",")",":","Set","of","workers","that","do","n't","need","to","be","updated",".","Successfully","updated","workers","will","be","added","to","this","set",".","agent_updates","(","object",")",":","Value","which","will","be","passed","into","the","`","agent_update_fn","`","before","sampling","episodes",".","If","a","list","is","passed","in",",","it","must","have","length","exactly","`","factory.n_workers","`",",","and","will","be","spread","across","the","workers",".","env_updates","(","object",")",":","Value","which","will","be","passed","into","the","`","env_update_fn","`","before","sampling","episodes",".","If","a","list","is","passed","in",",","it","must","have","length","exactly","`","factory.n_workers","`",",","and","will","be","spread","across","the","workers","."]
code: def _push_updates(self, updated_workers, agent_updates, env_updates):
      """Apply updates to the workers and (re)start them.
  
      Args:
          updated_workers (set[int]): Set of workers that don't need to be
              updated. Successfully updated workers will be added to this
              set.
          agent_updates (object): Value which will be passed into the
              `agent_update_fn` before sampling episodes. If a list is passed
              in, it must have length exactly `factory.n_workers`, and will
              be spread across the workers.
          env_updates (object): Value which will be passed into the
              `env_update_fn` before sampling episodes. If a list is passed
              in, it must have length exactly `factory.n_workers`, and will
              be spread across the workers.
  
      """
      for worker_number, q in enumerate(self._to_worker):
          if worker_number in updated_workers:
              try:
                  q.put_nowait(("continue", ()))
              except queue.Full:
                  pass
          else:
              try:
                  q.put_nowait(
                      (
                          "start",
                          (
                              agent_updates[worker_number],
                              env_updates[worker_number],
                              self._agent_version,
                          ),
                      )
                  )
                  updated_workers.add(worker_number)
              except queue.Full:
                  pass
  
imports: from collections import defaultdict
  import itertools
  import multiprocessing
  import queue
  import click
  import cloudpickle
  import psutil
  import setproctitle
  from garage import EpisodeBatch
  from garage.experiment.deterministic import get_seed
  from garage.sampler.default_worker import DefaultWorker
  from garage.sampler.sampler import Sampler
  from garage.sampler.worker_factory import WorkerFactory
label_desc: Use image node_id 3 for calling the MultiprocessingSampler obj's underlying member method code with example usage: obj._push_updates(updated_workers, agent_updates, env_updates) without return types