if (
                cp_filename and
                cp_frequency and
                gen % cp_frequency == 0 and
                (cp_period is None or time.time() - time_last_save > cp_period)