class_docstr: Evaluate how algorithms' sampling efficiency is affected by different degrees of parallelization.
  
  Evaluate the average performance (objective value) for each search algorithm
  at different time steps (trial number).
  The performance (objective value) used for a trial will the best result until the trial.
  
  Parameters
  ----------
  repetitions: int, optional
      Number of experiment to run for each number of workers. Default: 1
  executor: str, optional
      Name of orion worker exeuctor. If `None`, the default executor of the benchmark will be used. Default: `None`.
  n_workers: list or tuple, optional
      List or tuple of integers for the number of workers for each experiment. Default: (1, 2, 4)
  **executor_config: dict
      Parameters for the corresponding executor.
code: def __init__(
      self,
      repetitions=1,
      executor=None,
      n_workers=(1, 2, 4),
      **executor_config,
  ):
      super().__init__(
          repetitions=repetitions * len(n_workers),
          executor=executor,
          n_workers=n_workers,
          **executor_config,
      )
      self.worker_num = len(n_workers)
      self.executor_name = executor
      self.executor_config = executor_config
      self.workers = [
          n_worker for n_worker in n_workers for _ in range(repetitions)
      ]
  
file_path: orion/src/orion/benchmark/assessment/parallelassessment.py
imports: from collections import defaultdict
  from orion.benchmark.assessment.base import BenchmarkAssessment
  from orion.executor.base import executor_factory
  from orion.plotting.base import durations, parallel_assessment, regrets
label_desc: Use image node_id 1 to create a new ParallelAssessment object from inherited base classes: BenchmarkAssessment with example: obj = ParallelAssessment(repetitions, executor, n_workers)