code: def run_full_benchmark(num_pending_pgs):
      # Run the benchmark with different num_bundles & num_pgs params.
      num_bundles = 1
      num_pgs_test = [10, 100, 200, 400, 800, 1600]
      results = []
      for num_pgs in num_pgs_test:
          results.append(
              test_placement_group_perf(
                  num_pgs, num_bundles, num_pending_pgs
              )
          )
  
      def print_result(num_pending_pgs, num_pgs, num_bundles, result):
          print(
              f"Num pending pgs: {num_pending_pgs}, "
              f"Num pgs: {num_pgs}, "
              f"Num bundles {num_bundles}"
          )
          print("Throughput: ")
          for k, v in result.items():
              print(f"\t{k}: {v}")
  
      for i in range(len(results)):
          num_pgs = num_pgs_test[i]
          result = results[i]
          print_result(num_pending_pgs, num_pgs, num_bundles, result)
  
      # Test with different length of bundles.
      num_bundles_list = [1, 10, 20, 40]
      num_pgs = 100
      results = []
      for num_bundles in num_bundles_list:
          results.append(
              test_placement_group_perf(
                  num_pgs, num_bundles, num_pending_pgs
              )
          )
  
      for i in range(len(results)):
          num_bundles = num_bundles_list[i]
          result = results[i]
          print_result(num_pending_pgs, num_pgs, num_bundles, result)
  
file_path: ray/release/nightly_tests/placement_group_tests/placement_group_performance_test.py
imports: import argparse
  import json
  import os
  import ray
  from ray._private.ray_microbenchmark_helpers import timeit
label_desc: Use image node_id 2 for calling a global function with example usage: run_full_benchmark(num_pending_pgs) without return types