code: def multiprocessing():
      """
      Train agent on experience collected in parallel from 4 CartPole environments running in
      separate processes.
  
      Typical use case:
          (a) time for batched agent.act() ~ time for agent.act()
                          > time for environment.execute() + remote communication
              --> batch_agent_calls = True
          (b) time for environment.execute() > time for agent.act() + process communication
              --> batch_agent_calls = False
      """
      agent = "benchmarks/configs/ppo.json"
      environment = "benchmarks/configs/cartpole.json"
      runner = Runner(
          agent=agent,
          environment=environment,
          num_parallel=4,
          remote="multiprocessing",
      )
      runner.run(
          num_episodes=100, batch_agent_calls=True
      )  # optional: batch_agent_calls=True
      runner.close()
  
imports: from threading import Thread
  from tensorforce import Environment, Runner
label_desc: Use image node_id 4 for calling a global function with example usage: multiprocessing() without return types