docstr: Set the stop flag and join workers.
docstr_tok: ["Set","the","stop","flag","and","join","workers","."]
code: def __del__(self):
      """Set the stop flag and join workers."""
      self.broadcasting_container.set_stop_flag()
      for worker in self.workers:
          if worker.is_alive():
              worker.terminate()
              worker.join()
      self.worker_output_queue.close()
  
imports: import logging
  import multiprocessing
  import os
  import signal
  from multiprocessing.context import BaseContext
  from typing import Union, Optional, Generator, Callable, List
  import cloudpickle
  from maze.core.agent.policy import Policy
  from maze.core.agent.torch_model import TorchModel
  from maze.core.annotations import override
  from maze.core.env.maze_env import MazeEnv
  from maze.core.wrappers.observation_normalization.normalization_strategies.base import StructuredStatisticsType
  from maze.train.parallelization.broadcasting_container import BroadcastingManager, BroadcastingContainer
  from maze.train.trainers.es.distributed.es_distributed_rollouts import ESDistributedRollouts, ESRolloutResult
  from maze.train.trainers.es.distributed.es_subproc_worker import ESSubprocWorker
  from maze.train.trainers.es.es_shared_noise_table import SharedNoiseTable
label_desc: Use image node_id 7 for calling the ESSubprocDistributedRollouts obj's underlying member method code with example usage: obj.__del__() without return types