code: def make_program() -> lp.Program:
      """Define the program topology."""
      program = lp.Program("batching")
      batch_size = _NUM_CLIENTS.value
      # In case of big batch size it is important to set thread_pool_size to
      # prevent deadlocks (Courier uses synchronous GRPC server currently...).
      server = program.add_node(
          lp.CourierNode(
              Server,
              batch_size,
              courier_kwargs={"thread_pool_size": batch_size},
          ),
          label="server",
      )
      with program.group("clients"):
          for client_id in range(_NUM_CLIENTS.value):
              program.add_node(
                  lp.CourierNode(Client, client_id, server)
              )
      return program
  
file_path: launchpad/launchpad/examples/batching/launch.py
imports: import time
  from absl import app
  from absl import flags
  from absl import logging
  import launchpad
  import numpy
label_desc: Use image node_id 1 for calling a global function with example usage: make_program() and returns: program