def main_loop(self):
        """
            One loop of learner, runs one learn operation of learner
        """
        data = self._prefetch_queue.get()
        with self.learn_timer.time():
            self.learn(data)
        if self.should_publish_parameter():
            with self.publish_timer.time():
                self.publish_parameter(self.current_iter,
                                       message='batch '+str(self.current_iter))
        self.iter_timer.lap()
        self.current_iter += 1

            One loop of learner, runs one learn operation of learner
        
surreal/learner/base.py