code: def test_parallel_single_output():
      # Create the SALib Problem specification
      sp = ProblemSpec(
          {
              "names": ["x1", "x2", "x3"],
              "groups": None,
              "bounds": [[-np.pi, np.pi]] * 3,
              "outputs": ["Y"],
          }
      )
  
      # Single core example
      (
          sp.sample_saltelli(2**8)
          .evaluate(Ishigami.evaluate)
          .analyze_sobol(
              calc_second_order=True, conf_level=0.95, seed=101
          )
      )
  
      # Parallel example
      psp = copy.deepcopy(sp)
      (
          psp.sample_saltelli(2**8)
          .evaluate_parallel(Ishigami.evaluate, nprocs=2)
          .analyze_sobol(
              calc_second_order=True,
              conf_level=0.95,
              nprocs=2,
              seed=101,
          )
      )
  
      assert (
          np.testing.assert_allclose(
              sp.results, psp.results, rtol=1e-3, atol=1e-3
          )
          is None
      ), "Model results not equal!"
  
      for col, x in sp.analysis.items():
          assert (
              np.testing.assert_allclose(x, psp.analysis[col]) is None
          ), "Analysis results not equal!"
  
file_path: SALib/tests/test_problem_spec.py
imports: import pytest
  import copy
  import numpy
  import pandas
  from SALib import ProblemSpec
  from SALib.test_functions import Ishigami
label_desc: Use image node_id 4 for calling a global function with example usage: test_parallel_single_output() without return types