code: def test_distributed_explainer_init(
      expln_args, expln_kwargs, distributed_opts
  ):
      atol = 1e-5  # abs tolerance for floating point comparisons
      distributed_explainer = DistributedExplainer(
          distributed_opts, MockExplainer, expln_args, expln_kwargs
      )
      assert (
          distributed_explainer.target_fcn.__name__
          == "default_target_fcn"
      )
      assert distributed_explainer.concatenate
      assert ray.is_initialized()
      assert isinstance(distributed_explainer.pool, ray.util.ActorPool)
      assert (
          len(distributed_explainer.pool._idle_actors)
          == distributed_opts["n_cpus"]
      )
  
      # test remote process is initialised properly
      for actor_idx in range(distributed_opts["n_cpus"]):
          distributed_explainer.actor_index = actor_idx
          assert (
              distributed_explainer.multiplier
              == expln_kwargs["multiplier"]
          )
          assert np.isclose(
              distributed_explainer.sleep_time, expln_args[0], atol=atol
          )
  
      ray.shutdown()
  
imports: import inspect
  import os
  import pytest
  import time
  from itertools import product
  from typing import Any, Dict, List, Optional, Tuple, Union
  import numpy
  from alibi.utils.distributed import DistributedExplainer, PoolCollection, ResourceError, invert_permutation, concatenate_minibatches
label_desc: Use image node_id 5 for calling a global function with example usage: test_distributed_explainer_init(expln_args, expln_kwargs, distributed_opts) without return types