WARNING: Non-multithreaded simulators broken: Adapted serialization to multithreaded simulator

This commit is contained in:
Andreas Tsouchlos 2022-11-28 16:00:03 +01:00
parent c3c0368399
commit fff31ce6ad

View File

@ -8,6 +8,7 @@ from pathlib import Path
import platform
from datetime import datetime
import timeit
import collections.abc
from utility import misc
@ -120,7 +121,14 @@ class SimulationDeSerializer:
self._save_metadata(sim_name, metadata)
# Save results
df = simulator.get_current_results()
data = {}
for key, value in simulator.get_current_results().items():
if not isinstance(value, collections.abc.Sequence):
value = [value]
data[misc.slugify(key)] = value
df = pd.DataFrame(data)
df.to_csv(self._get_results_path(sim_name))
def read_results(self, sim_name: str) -> typing.Tuple[
@ -165,10 +173,6 @@ class SimulationManager:
self._metadata = {"duration": 0}
self._sim_start_time = None
signal.signal(signal.SIGINT, self._exit_gracefully)
signal.signal(signal.SIGTERM, self._exit_gracefully)
signal.signal(signal.SIGHUP, self._exit_gracefully)
def _sim_configured(self) -> bool:
"""Check whether 'configure_simulation()' has been called."""
return (self._simulator is not None) and (
@ -224,13 +228,16 @@ class SimulationManager:
"""Start the simulation. This is a blocking call."""
assert self._sim_configured()
self._sim_start_time = timeit.default_timer()
try:
self._sim_start_time = timeit.default_timer()
self._simulator.start()
self._simulator.start_or_continue()
self._metadata["end_time"] = f"{datetime.now(tz=None)}"
self._metadata["duration"] \
+= timeit.default_timer() - self._sim_start_time
self._metadata["end_time"] = f"{datetime.now(tz=None)}"
self._metadata["duration"] \
+= timeit.default_timer() - self._sim_start_time
self._de_serializer.save_results(self._simulator, self._sim_name,
self._metadata)
self._de_serializer.save_results(self._simulator, self._sim_name,
self._metadata)
except KeyboardInterrupt:
self._exit_gracefully()