code: def test_parallel_evaluation(self):
      xin = 33
      repeat = 8
      # execute the task bulk using one process to get a baseline
      start_time = time.time()
      glconnect.get_unity().eval_lambda(
          lambda x: [fib(i) for i in x], [xin] * repeat
      )
      single_thread_time = time.time() - start_time
      logging.info(
          "Single thread lambda eval takes %s secs" % single_thread_time
      )
  
      # execute the task in parallel
      start_time = time.time()
      ans_list = glconnect.get_unity().parallel_eval_lambda(
          lambda x: fib(x), [xin] * repeat
      )
      multi_thread_time = time.time() - start_time
      logging.info(
          "Multi thread lambda eval takes %s secs" % multi_thread_time
      )
  
      # test the speed up by running in parallel
      nproc = multiprocessing.cpu_count()
      if nproc > 1 and multi_thread_time > (single_thread_time / 1.5):
          logging.warning(
              "Slow parallel processing: single thread takes %s secs, multithread on %s procs takes %s secs"
              % (single_thread_time, nproc, multi_thread_time)
          )
  
      # test accuracy
      ans = fib(xin)
      for a in ans_list:
          self.assertEqual(a, ans)
  
file_path: turicreate/src/python/turicreate/test/test_lambda.py
imports: from __future__ import print_function
  from __future__ import division
  from __future__ import absolute_import
  import multiprocessing
  import time
  import unittest
  import logging
  from .._connect import main
  from .._cython import cy_test_utils
  import os
  import pytest
label_desc: Use image node_id 3 for calling the LambdaTests obj's underlying member method code with example usage: obj.test_parallel_evaluation() without return types