'Cache timing results without repetition.'

def _cache_time(self, arg):

    if ((arg not in self._cache_good) and (arg not in self._cache_bad)):
        try:
            result = self._timed_pfunc(arg)
        except Exception as e:
            warnings.warn(str(e), AstropyUserWarning)
            self._cache_bad.append(arg)
        else:
            self._cache_good[arg] = result[0]
            self._cache_out[arg] = result[1]
