code: def main(unused_argv):
    
    stopwatch.sw.enabled = FLAGS.profile or FLAGS.trace
    stopwatch.sw.trace = FLAGS.trace
  
    map_inst = maps.get(FLAGS.map)
  
    agent_classes = []
    players = []
  
    agent_module, agent_name = FLAGS.agent.rsplit(".", 1)
    agent_cls = getattr(importlib.import_module(agent_module), agent_name)
    agent_classes.append(agent_cls)
    players.append(sc2_env.Agent(sc2_env.Race[FLAGS.agent_race],
                                 FLAGS.agent_name or agent_name))
  
    if map_inst.players >= 2:
      if FLAGS.agent2 == "Bot":
        players.append(sc2_env.Bot(sc2_env.Race[FLAGS.agent2_race],
                                   sc2_env.Difficulty[FLAGS.difficulty]))
      else:
        agent_module, agent_name = FLAGS.agent2.rsplit(".", 1)
        agent_cls = getattr(importlib.import_module(agent_module), agent_name)
        agent_classes.append(agent_cls)
        players.append(sc2_env.Agent(sc2_env.Race[FLAGS.agent2_race],
                                     FLAGS.agent2_name or agent_name))
  
    threads = []
    for _ in range(FLAGS.parallel - 1):
      t = threading.Thread(target=run_thread,
                           args=(agent_classes, players, FLAGS.map, False))
      threads.append(t)
      t.start()
  
    run_thread(agent_classes, players, FLAGS.map, FLAGS.render)
  
    for t in threads:
      t.join()
  
    if FLAGS.profile:
      print(stopwatch.sw)
docs: Run an agent.