code: def test_pickle_lock():
      # Test that ArrayProxy can be pickled, and that thread lock is created
  
      proxy = ArrayProxy("dummyfile", ((10, 10, 10), np.float32))
      assert islock(proxy._lock)
      pickled = pickle.dumps(proxy)
      unpickled = pickle.loads(pickled)
      assert islock(unpickled._lock)
      assert proxy._lock is not unpickled._lock
  
imports: import contextlib
  import gzip
  import pickle
  from io import BytesIO
  from unittest import mock
  import numpy
  import pytest
  from numpy.testing import assert_array_almost_equal, assert_array_equal
  from packaging.version import Version
  from ..None import __version__
  from ..arrayproxy import ArrayProxy, get_obj_dtype, is_proxy, reshape_dataobj
  from ..deprecator import ExpiredDeprecationError
  from ..nifti1 import Nifti1Header, Nifti1Image
  from ..openers import ImageOpener
  from ..testing import memmap_after_ufunc
  from ..tmpdirs import InTemporaryDirectory
  from .test_fileslice import slicer_samples
  from .test_openers import patch_indexed_gzip
label_desc: Use image node_id 20 for calling a global function with example usage: test_pickle_lock() without return types