bpo-43392: Optimize repeated calls to __import__() (GH-24735)

Implements a two steps check in `importlib._bootstrap._find_and_load()` to avoid locking when the module has been already imported and it's ready.

---

Using `importlib.__import__()`, after this, does show a big difference:

Before:
```
$ ./python -c 'import timeit; print(timeit.timeit("__import__(\"timeit\")", setup="from importlib import __import__"))'
15.92248619502061
```

After:
```
$ ./python -c 'import timeit; print(timeit.timeit("__import__(\"timeit\")", setup="from importlib import __import__"))'
1.206068897008663
```

---
This commit is contained in:
Germán Méndez Bravo 2021-08-12 11:23:29 -07:00 committed by GitHub
parent 953d27261e
commit 03648a2a91
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 539 additions and 517 deletions

1031
Python/importlib.h generated

File diff suppressed because it is too large Load diff