code: def test_blockscope():
      class dummy_block:
          pass
  
      blockscope_list = []
      status = [False]
      event = threading.Event()
  
      def f():
          net = (
              dummy_block()
          )  # BlockScope only keeps a weakref to the Block
          with mx.gluon.block._block_scope(net):
              x = mx.name.current().get(None, "hello")
              event.wait()
              if x == "dummy_block_hello0":
                  status[0] = True
  
      thread = threading.Thread(target=f)
      thread.start()
      event.set()
      thread.join()
      event.clear()
      assert status[
          0
      ], "Spawned thread isn't using the correct blockscope namemanager"
  
file_path: mxnet/tests/python/unittest/test_thread_local.py
imports: import threading
  import numpy
  import mxnet
  from mxnet import device, attribute
  from mxnet.device import Device
  from mxnet.attribute import AttrScope
  from mxnet.test_utils import assert_almost_equal, set_default_device
  from mxnet.util import _NumpyArrayScope, set_np_shape
label_desc: Use image node_id 4 for calling a global function with example usage: test_blockscope() without return types