WARNING: Non-multithreaded simulators broken: Adapted serialization to multithreaded simulator
This commit is contained in:
parent
c3c0368399
commit
fff31ce6ad
@ -8,6 +8,7 @@ from pathlib import Path
|
|||||||
import platform
|
import platform
|
||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
import timeit
|
import timeit
|
||||||
|
import collections.abc
|
||||||
|
|
||||||
from utility import misc
|
from utility import misc
|
||||||
|
|
||||||
@ -120,7 +121,14 @@ class SimulationDeSerializer:
|
|||||||
self._save_metadata(sim_name, metadata)
|
self._save_metadata(sim_name, metadata)
|
||||||
|
|
||||||
# Save results
|
# 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))
|
df.to_csv(self._get_results_path(sim_name))
|
||||||
|
|
||||||
def read_results(self, sim_name: str) -> typing.Tuple[
|
def read_results(self, sim_name: str) -> typing.Tuple[
|
||||||
@ -165,10 +173,6 @@ class SimulationManager:
|
|||||||
self._metadata = {"duration": 0}
|
self._metadata = {"duration": 0}
|
||||||
self._sim_start_time = None
|
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:
|
def _sim_configured(self) -> bool:
|
||||||
"""Check whether 'configure_simulation()' has been called."""
|
"""Check whether 'configure_simulation()' has been called."""
|
||||||
return (self._simulator is not None) and (
|
return (self._simulator is not None) and (
|
||||||
@ -224,13 +228,16 @@ class SimulationManager:
|
|||||||
"""Start the simulation. This is a blocking call."""
|
"""Start the simulation. This is a blocking call."""
|
||||||
assert self._sim_configured()
|
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["end_time"] = f"{datetime.now(tz=None)}"
|
||||||
self._metadata["duration"] \
|
self._metadata["duration"] \
|
||||||
+= timeit.default_timer() - self._sim_start_time
|
+= timeit.default_timer() - self._sim_start_time
|
||||||
|
|
||||||
self._de_serializer.save_results(self._simulator, self._sim_name,
|
self._de_serializer.save_results(self._simulator, self._sim_name,
|
||||||
self._metadata)
|
self._metadata)
|
||||||
|
except KeyboardInterrupt:
|
||||||
|
self._exit_gracefully()
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user