Present the results if they have become available or timed out.

def _scheduled_check_for_summaries(self):
        """Present the results if they have become available or timed out."""
        if self._analysis_process is None:
            return
        # handle time out
        timed_out = time.time() - self._analyze_start_time > self.time_limit
        if timed_out:
            self._handle_results('Analysis timed out but managed\n'
                                 ' to get lower turn results.',
                                 'Analysis timed out with no results.')
            return
        # handle standard completion
        try:
            self._analysis_process.join(0.001)
        except AssertionError:
            pass  # if some timing issue with closed process, just continue
        if not self._analysis_process.is_alive():
            self._handle_results('Completed analysis.',
                                 'Unable to find the game on screen.')
            return
        #finally, if it's still alive, then come back later
        self._base.after(self._POLL_PERIOD_MILLISECONDS,
                         self._scheduled_check_for_summaries)