diff --git a/mmengine/registry/default_scope.py b/mmengine/registry/default_scope.py index 6e7b32f6cfdb2944d34fbed58f687d58a83810d2..cc27f8ee3446cd39c140f2f09894e8701a974eea 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 3846b15adef13300e92c72713f551566633dc7d5..0798f4a2c75831dd67559f3df5614fd6431dba3d 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