internally create a unique file name and set it to the environment
   variable "TORCHELASTIC_TIMER_FILE", and this environment variable
   will be propagated to the worker processes to allow them to connect
   to the same named pipe that "LocalElasticAgent" uses.
Example launching function
  def trainer(args) -> str:
      return "do train"

  def main():
      start_method="spawn"
      shared_queue= multiprocessing.get_context(start_method).Queue()
      spec = WorkerSpec(
                  role="trainer",
                  local_world_size=nproc_per_process,
                  entrypoint=trainer,
                  args=("foobar",),
                  ...<OTHER_PARAMS...>)
      agent = LocalElasticAgent(spec, start_method)
      results = agent.run()

      if results.is_failed():
          print("trainer failed")
      else:
          print(f"rank 0 return value: {results.return_values[0]}")
