code: def close():
      # terminate the IO Loop
      if ZmqWrapper._thread is not None:
          ZmqWrapper._ioloop_block.set()  # free any blocking call
          ZmqWrapper._ioloop.add_callback(ZmqWrapper._ioloop.stop)
          ZmqWrapper._thread = None
          ZmqWrapper._ioloop = None
          print("ZMQ IOLoop is now closed")
  
file_path: tensorwatch/tensorwatch/zmq_wrapper.py
imports: import zmq
  import errno
  import pickle
  from zmq.eventloop import ioloop, zmqstream
  import zmq.utils.monitor
  import functools, sys, logging
  from threading import Thread, Event
  from .None import utils
  import weakref, logging
label_desc: Use image node_id 2 for calling the ZmqWrapper obj's underlying member method code with example usage: obj.close() without return types