code: def create_walker(self, selector, skip_all=True):
          
  
          if selector.buffered:
              walker = BufferedStreamWalker(selector, self._engine, skip_all=skip_all)
              self._queue_walkers.append(walker)
              return walker
  
          if selector.match_type == DataStream.CounterType:
              walker = CounterStreamWalker(selector)
          else:
              walker = VirtualStreamWalker(selector)
  
          self._virtual_walkers.append(walker)
  
          return walker
docs: Create a stream walker based on the given selector.
  
          This function returns a StreamWalker subclass that will
          remain up to date and allow iterating over and popping readings
          from the stream(s) specified by the selector.
  
          When the stream walker is done, it should be passed to
          destroy_walker so that it is removed from internal lists that
          are used to always keep it in sync.
  
          Args:
              selector (DataStreamSelector): The selector describing the
                  streams that we want to iterate over.
              skip_all (bool): Whether to start at the beginning of the data
                  or to skip everything and start at the end.  Defaults
                  to skipping everything.  This parameter only has any
                  effect on buffered stream selectors.
  
          Returns:
              StreamWalker: A properly updating stream walker with the given selector.