code: def test_nonserializable_map_batches(shutdown_only):
      import threading
  
      lock = threading.Lock()
  
      x = ray.data.range(10)
      # Check that the `inspect_serializability` trace was printed
      with pytest.raises(
          TypeError, match=r".*was found to be non-serializable.*"
      ):
          x.map_batches(lambda _: lock).take(1)
  
imports: import itertools
  import math
  import os
  import signal
  import threading
  import time
  from typing import Iterator
  import numpy
  import pandas
  import pyarrow
  import pyarrow.parquet
  import pytest
  import ray
  from ray._private.test_utils import wait_for_condition
  from ray.data.block import BlockAccessor
  from ray.data.context import DataContext
  from ray.data.tests.conftest import *
  from ray.data.tests.util import column_udf, column_udf_class, extract_values
  from ray.tests.conftest import *
label_desc: Use image node_id 28 for calling a global function with example usage: test_nonserializable_map_batches(shutdown_only) without return types