code: def initialize():
      # create thread that will wait on IO Loop
      if ZmqWrapper._thread is None:
          ZmqWrapper._thread = Thread(
              target=ZmqWrapper._run_io_loop,
              name="ZMQIOLoop",
              daemon=True,
          )
          ZmqWrapper._start_event = Event()
          ZmqWrapper._ioloop_block = Event()
          ZmqWrapper._ioloop_block.set()  # no blocking call in progress right now
          ZmqWrapper._thread.start()
          # this is needed to make sure IO Loop has enough time to start
          ZmqWrapper._start_event.wait()
  
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 1 for calling the ZmqWrapper obj's underlying member method code with example usage: obj.initialize() without return types