diff --git a/mindspore/train/summary/summary_record.py b/mindspore/train/summary/summary_record.py index 686d8afa9d..065d281355 100644 --- a/mindspore/train/summary/summary_record.py +++ b/mindspore/train/summary/summary_record.py @@ -13,6 +13,7 @@ # limitations under the License. # ============================================================================ """Record the summary event.""" +import atexit import os import re import threading @@ -21,7 +22,7 @@ from mindspore import log as logger from ..._c_expression import Tensor from ..._checkparam import _check_str_by_regular -from .._utils import _make_directory, _check_to_numpy, _check_lineage_value +from .._utils import _check_lineage_value, _check_to_numpy, _make_directory from ._summary_adapter import get_event_file_name, package_graph_event from ._writer_pool import WriterPool @@ -102,8 +103,8 @@ class SummaryRecord: file_suffix="_MS", network=None): - self._closed, self._mode = False, 'train' - self._data_pool = _dictlist() + self._closed, self._event_writer = False, None + self._mode, self._data_pool = 'train', _dictlist() _check_str_by_regular(file_prefix) _check_str_by_regular(file_suffix) @@ -141,6 +142,7 @@ class SummaryRecord: self._event_writer = WriterPool(log_dir, summary=self.full_file_name, lineage=get_event_file_name('events', '_lineage')) + atexit.register(self.close) def __enter__(self): """Enter the context manager.""" @@ -327,12 +329,10 @@ class SummaryRecord: if not self._closed and self._event_writer: # event writer flush and close logger.info('Please wait it may take quite some time to finish writing and closing.') + atexit.unregister(self.close) self._event_writer.close() self._closed = True - def __del__(self) -> None: - self.close() - @staticmethod def _parse_from(name: str = None): """Parse the tag and type from name."""