bpo-43293: Doc: move note about GIL to top of threading module (GH-24622)

The note about the GIL was buried pretty deep in the threading documentation,
and this made it hard for first time users to discover why their attempts
at using threading to parallelizing their application did not work.

In this commit, the note is moved to the top of the module documention for
visibility.
(cherry picked from commit 32181be608)

Co-authored-by: Guanzhong Chen <quantum2048@gmail.com>
This commit is contained in:
Miss Islington (bot) 2021-02-24 11:01:33 -08:00 committed by GitHub
parent d81a20454e
commit f82578ace1
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -21,6 +21,19 @@ level :mod:`_thread` module. See also the :mod:`queue` module.
supported by this module. supported by this module.
.. impl-detail::
In CPython, due to the :term:`Global Interpreter Lock
<global interpreter lock>`, only one thread
can execute Python code at once (even though certain performance-oriented
libraries might overcome this limitation).
If you want your application to make better use of the computational
resources of multi-core machines, you are advised to use
:mod:`multiprocessing` or :class:`concurrent.futures.ProcessPoolExecutor`.
However, threading is still an appropriate model if you want to run
multiple I/O-bound tasks simultaneously.
This module defines the following functions: This module defines the following functions:
@ -393,19 +406,6 @@ since it is impossible to detect the termination of alien threads.
property instead. property instead.
.. impl-detail::
In CPython, due to the :term:`Global Interpreter Lock
<global interpreter lock>`, only one thread
can execute Python code at once (even though certain performance-oriented
libraries might overcome this limitation).
If you want your application to make better use of the computational
resources of multi-core machines, you are advised to use
:mod:`multiprocessing` or :class:`concurrent.futures.ProcessPoolExecutor`.
However, threading is still an appropriate model if you want to run
multiple I/O-bound tasks simultaneously.
.. _lock-objects: .. _lock-objects:
Lock Objects Lock Objects