From 8b1518845d9b0e1fa59ba9d67fef4742f2a7b654 Mon Sep 17 00:00:00 2001 From: heleiwang Date: Wed, 23 Dec 2020 18:42:55 +0800 Subject: [PATCH] fix GeneratorDataset join error --- mindspore/dataset/engine/datasets.py | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/mindspore/dataset/engine/datasets.py b/mindspore/dataset/engine/datasets.py index 54a2b15e9f..fae2319963 100644 --- a/mindspore/dataset/engine/datasets.py +++ b/mindspore/dataset/engine/datasets.py @@ -3450,6 +3450,7 @@ class SamplerFn: self.num_worker = num_worker self.multi_process = multi_process self.joined = False + self.ppid = os.getpid() # Event for end of epoch if multi_process is True: self.eof = multiprocessing.Event() @@ -3508,11 +3509,12 @@ class SamplerFn: yield tuple([np.array(x, copy=False) for x in result]) def _stop_subprocess(self): - self.eof.set() - if self.joined is False: + # Only the main process can call join + if self.joined is False and self.ppid == os.getpid(): + self.eof.set() + self.joined = True for w in self.workers: w.join() - self.joined = True def __del__(self): self._stop_subprocess()