diff --git a/CHANGELOG.md b/CHANGELOG.md index cc1d1cfdae105..50bd9fcaaa783 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -98,6 +98,8 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/). - Fixed failure when `DataLoader(batch_size=None)` is passed ([#10345](https://github.com/PyTorchLightning/pytorch-lightning/issues/10345)) +- Fixed issue with pickling `CSVLogger` after a call to `CSVLogger.save` ([#10388](https://github.com/PyTorchLightning/pytorch-lightning/pull/10388)) + - diff --git a/pytorch_lightning/loggers/csv_logs.py b/pytorch_lightning/loggers/csv_logs.py index 77adfe551f72d..454a17905c529 100644 --- a/pytorch_lightning/loggers/csv_logs.py +++ b/pytorch_lightning/loggers/csv_logs.py @@ -95,9 +95,9 @@ def save(self) -> None: metrics_keys = list(last_m.keys()) with open(self.metrics_file_path, "w", newline="") as f: - self.writer = csv.DictWriter(f, fieldnames=metrics_keys) - self.writer.writeheader() - self.writer.writerows(self.metrics) + writer = csv.DictWriter(f, fieldnames=metrics_keys) + writer.writeheader() + writer.writerows(self.metrics) class CSVLogger(LightningLoggerBase): diff --git a/tests/loggers/test_all.py b/tests/loggers/test_all.py index 67838e219fcfb..271ffce811fe5 100644 --- a/tests/loggers/test_all.py +++ b/tests/loggers/test_all.py @@ -263,6 +263,10 @@ def _test_loggers_pickle(tmpdir, monkeypatch, logger_class): # the logger needs to remove it from the state before pickle _ = logger.experiment + # logger also has to avoid adding un-picklable attributes to self in .save + logger.log_metrics({"a": 1}) + logger.save() + # test pickling loggers pickle.dumps(logger)