<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def create_walker(self, selector, skip_all=True):
 """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. """


        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