docs: def spin_once(self, polling_sec=0.010):
          '''Read the queued data and call the callback for them.
          You have to handle KeyboardInterrupt (\C-c) manually.
  
          Example:
  
          >>> def callback(msg):
          ...   print msg
          >>> sub = jps.Subscriber('topic_name', callback)
          >>> try:
          ...   while True:
          ...     sub.spin_once():
          ...     time.sleep(0.1)
          ... except KeyboardInterrupt:
          ...   pass
  
          '''
          # parse all data
          while True:
              socks = dict(self._poller.poll(polling_sec * 1000))
              if socks.get(self._socket) == zmq.POLLIN:
                  msg = self._socket.recv()
                  self._callback(msg)
              else:
                  return