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: Construct this sampler.
  
  Args:
      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.
      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.
  
  Returns:
      Sampler: An instance of `cls`.
docstr_tok: ["Construct","this","sampler",".","Args",":","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",".","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",".","Returns",":","Sampler",":","An","instance","of","`","cls","`","."]
code: def from_worker_factory(cls, worker_factory, agents, envs):
      """Construct this sampler.
  
      Args:
          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.
          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.
  
      Returns:
          Sampler: An instance of `cls`.
  
      """
      return cls(agents, envs, worker_factory=worker_factory)
  
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 2 for calling the MultiprocessingSampler obj's underlying member method code with example usage: obj.from_worker_factory(cls, worker_factory, agents, envs) and returns: cls