Now removing savefile after loading; Properly terminating program on signal sigterm

This commit is contained in:
Andreas Tsouchlos 2022-11-16 19:29:12 +01:00
parent 8098794804
commit e27a86969e

View File

@ -153,7 +153,6 @@ class Simulator:
if the number of target frame errors has been reached if the number of target frame errors has been reached
""" """
if self._curr_num_frame_errors >= self._target_frame_errors: if self._curr_num_frame_errors >= self._target_frame_errors:
# TODO: Properly handle the multiple decoders
self._BERs[self._current_decoder_index] \ self._BERs[self._current_decoder_index] \
.append(self._curr_num_bit_errors / (self._curr_num_iterations * self._n)) .append(self._curr_num_bit_errors / (self._curr_num_iterations * self._n))
@ -256,6 +255,7 @@ class SimulationManager:
signal.signal(signal.SIGINT, self._exit_gracefully) signal.signal(signal.SIGINT, self._exit_gracefully)
signal.signal(signal.SIGTERM, self._exit_gracefully) signal.signal(signal.SIGTERM, self._exit_gracefully)
signal.signal(signal.SIGHUP, self._exit_gracefully)
# #
# Functions relating to the pausing and restarting of simulations # Functions relating to the pausing and restarting of simulations
@ -266,7 +266,10 @@ class SimulationManager:
return os.path.isfile(self._sim_state_filepath) return os.path.isfile(self._sim_state_filepath)
def load_unfinished(self): def load_unfinished(self):
"""Load the state of an unfinished simulation its savefile.""" """Load the state of an unfinished simulation its savefile.
Warning: This function deletes the savefile after loading.
"""
assert self.unfinished_simulation_present() assert self.unfinished_simulation_present()
self._logger.info("Loading saved simulation state") self._logger.info("Loading saved simulation state")
@ -274,6 +277,8 @@ class SimulationManager:
with open(self._sim_state_filepath, "rb") as file: with open(self._sim_state_filepath, "rb") as file:
self._simulator = pickle.load(file) self._simulator = pickle.load(file)
os.remove(self._sim_state_filepath)
# TODO: Make sure old state is overwritten # TODO: Make sure old state is overwritten
def _save_state(self) -> None: def _save_state(self) -> None:
"""Write the state of the currently configured simulation to a savefile.""" """Write the state of the currently configured simulation to a savefile."""
@ -296,6 +301,8 @@ class SimulationManager:
self._simulator.stop() self._simulator.stop()
self._save_state() self._save_state()
exit()
# #
# Functions responsible for the actual simulation # Functions responsible for the actual simulation
# #