From 33d7c81bc4993a3f2932a4d67ea8f05429c7de2a Mon Sep 17 00:00:00 2001 From: Mashiro <57566630+HAOCHENYE@users.noreply.github.com> Date: Tue, 30 Aug 2022 16:28:18 +0800 Subject: [PATCH] [Refactor]: Avoid creating instances with the same name (#483) --- mmengine/registry/default_scope.py | 2 ++ tests/test_registry/test_default_scope.py | 13 +++++++++++++ 2 files changed, 15 insertions(+) diff --git a/mmengine/registry/default_scope.py b/mmengine/registry/default_scope.py index 6e7b32f6..cc27f8ee 100644 --- a/mmengine/registry/default_scope.py +++ b/mmengine/registry/default_scope.py @@ -86,6 +86,8 @@ class DefaultScope(ManagerMixin): yield else: tmp = copy.deepcopy(cls._instance_dict) + # To avoid create an instance with the same name. + time.sleep(1e-6) cls.get_instance(f'overwrite-{time.time()}', scope_name=scope_name) try: yield diff --git a/tests/test_registry/test_default_scope.py b/tests/test_registry/test_default_scope.py index 3846b15a..0798f4a2 100644 --- a/tests/test_registry/test_default_scope.py +++ b/tests/test_registry/test_default_scope.py @@ -33,3 +33,16 @@ class TestDefaultScope: ).scope_name == 'test_overwrite' assert DefaultScope.get_current_instance( ).scope_name == origin_scope.scope_name == 'origin_scope' + + # Test overwrite default scope immediately. + # Test sequentially overwrite. + with DefaultScope.overwrite_default_scope(scope_name='test_overwrite'): + pass + with DefaultScope.overwrite_default_scope(scope_name='test_overwrite'): + pass + + # Test nested overwrite. + with DefaultScope.overwrite_default_scope(scope_name='test_overwrite'): + with DefaultScope.overwrite_default_scope( + scope_name='test_overwrite'): + pass -- GitLab