code: def testWithParametersTwoRuns2(self):
      # Makes sure two runs in the same script
      # pass (https://github.com/ray-project/ray/issues/16609)
      def train_fn(config, extra=4):
          ray.train.report(dict(metric=extra))
  
      def train_fn_2(config, extra=5):
          ray.train.report(dict(metric=extra))
  
      trainable1 = tune.with_parameters(train_fn, extra=8)
      trainable2 = tune.with_parameters(train_fn_2, extra=9)
  
      out1 = tune.run(trainable1, metric="metric", mode="max")
      out2 = tune.run(trainable2, metric="metric", mode="max")
      self.assertEqual(out1.best_result["metric"], 8)
      self.assertEqual(out2.best_result["metric"], 9)
  
imports: import json
  import os
  import sys
  import shutil
  import tempfile
  import unittest
  import ray
  from ray.air.constants import TRAINING_ITERATION
  from ray.rllib import _register_all
  import ray.train
  from ray import tune
  from ray.train import Checkpoint, CheckpointConfig
  from ray.tune.logger import NoopLogger
  from ray.tune.execution.placement_groups import PlacementGroupFactory
  from ray.tune.trainable import with_parameters, wrap_function
  from ray.tune.result import DEFAULT_METRIC
  from ray.tune.schedulers import ResourceChangingScheduler
  from ray.train.tests.util import mock_storage_context
label_desc: Use image node_id 8 for calling the FunctionApiTest obj's underlying member method code with example usage: obj.testWithParametersTwoRuns2() without return types