diff --git a/mindspore/dataset/engine/datasets.py b/mindspore/dataset/engine/datasets.py index aa0be6466e..7a8e261d9d 100644 --- a/mindspore/dataset/engine/datasets.py +++ b/mindspore/dataset/engine/datasets.py @@ -3372,7 +3372,7 @@ class _GeneratorWorkerMt(threading.Thread): """ Get function for worker result queue. Block with timeout. """ - return self.res_queue.get(timeout=10) + return self.res_queue.get(timeout=30) class _GeneratorWorkerMp(multiprocessing.Process): @@ -3395,17 +3395,18 @@ class _GeneratorWorkerMp(multiprocessing.Process): """ Get function for worker result queue. Block with timeout. """ - while check_iterator_cleanup() is False: - try: - return self.res_queue.get(timeout=10) - except multiprocessing.TimeoutError: - continue - - raise Exception("Generator worker process timeout") + # Relax 10s to 30s, since it sometimes will cause "Generator worker process timeout" + # when we run too many iterators with infinite epoch(num_epoch=-1) + return self.res_queue.get(timeout=30) def __del__(self): - self.terminate() + # Try to destruct here, sometimes the class itself will be destructed in advance, + # so "self" will be a NoneType + try: + self.terminate() + except AttributeError: + pass class GeneratorDataset(MappableDataset):