@@ -956,9 +956,19 @@ def _find_and_load_unlocked(name, import_):
956956
957957
958958def _find_and_load (name , import_ ):
959- """Find and load the module, and release the import lock."""
960- with _ModuleLockManager (name ):
961- return _find_and_load_unlocked (name , import_ )
959+ """Find and load the module."""
960+ _imp .acquire_lock ()
961+ if name not in sys .modules :
962+ with _ModuleLockManager (name ):
963+ return _find_and_load_unlocked (name , import_ )
964+ module = sys .modules [name ]
965+ if module is None :
966+ _imp .release_lock ()
967+ message = ('import of {} halted; '
968+ 'None in sys.modules' .format (name ))
969+ raise ModuleNotFoundError (message , name = name )
970+ _lock_unlock_module (name )
971+ return module
962972
963973
964974def _gcd_import (name , package = None , level = 0 ):
@@ -973,17 +983,7 @@ def _gcd_import(name, package=None, level=0):
973983 _sanity_check (name , package , level )
974984 if level > 0 :
975985 name = _resolve_name (name , package , level )
976- _imp .acquire_lock ()
977- if name not in sys .modules :
978- return _find_and_load (name , _gcd_import )
979- module = sys .modules [name ]
980- if module is None :
981- _imp .release_lock ()
982- message = ('import of {} halted; '
983- 'None in sys.modules' .format (name ))
984- raise ModuleNotFoundError (message , name = name )
985- _lock_unlock_module (name )
986- return module
986+ return _find_and_load (name , _gcd_import )
987987
988988
989989def _handle_fromlist (module , fromlist , import_ ):
0 commit comments