class_docstr: ZMQ subclass of tornado's IOLoop
  
  Minor modifications, so that .current/.instance return self
class_docstr_tok: ["ZMQ","subclass","of","tornado","'s","IOLoop","Minor","modifications",",","so","that",".current\/.instance","return","self"]
docstr: Returns the current thread’s IOLoop.
          
docstr_tok: ["Returns","the","current","thread","\u2019","s","IOLoop","."]
code: def current(cls, *args, **kwargs):
      """Returns the current thread’s IOLoop."""
      # install ZMQIOLoop as the active IOLoop implementation
      # when using tornado 3
      if tornado_version >= (3,):
          PollIOLoop.configure(cls)
      loop = PollIOLoop.current(*args, **kwargs)
      if not isinstance(loop, cls):
          warnings.warn(
              "IOLoop.current expected instance of %r, got %r"
              % (cls, loop),
              RuntimeWarning,
              stacklevel=2,
          )
      return loop
  
imports: from __future__ import absolute_import, division, with_statement
  import os
  import time
  import warnings
  from zmq import Poller, POLLIN, POLLOUT, POLLERR, ZMQError, ETERM
  from .minitornado.ioloop import PollIOLoop, PeriodicCallback
  from .minitornado.log import gen_log
label_desc: Use image node_id 3 for calling the ZMQIOLoop obj's underlying member method code with example usage: obj.current(cls) and returns: loop