[Python-checkins] r87794 - in python/branches/release27-maint: Doc/glossary.rst Doc/library/threading.rst

antoine.pitrou python-checkins at python.org
Thu Jan 6 17:35:15 CET 2011


Author: antoine.pitrou
Date: Thu Jan 6 17:35:14 2011
New Revision: 87794
Log:
Merged revisions 87792 via svnmerge from 
svn+ssh://pythondev@svn.python.org/python/branches/py3k
........
 r87792 | antoine.pitrou | 2011年01月06日 17:31:28 +0100 (jeu., 06 janv. 2011) | 3 lines
 
 Elaborate about the GIL.
........
Modified:
 python/branches/release27-maint/ (props changed)
 python/branches/release27-maint/Doc/glossary.rst
 python/branches/release27-maint/Doc/library/threading.rst
Modified: python/branches/release27-maint/Doc/glossary.rst
==============================================================================
--- python/branches/release27-maint/Doc/glossary.rst	(original)
+++ python/branches/release27-maint/Doc/glossary.rst	Thu Jan 6 17:35:14 2011
@@ -106,9 +106,10 @@
 See :pep:`343`.
 
 CPython
- The canonical implementation of the Python programming language. The
- term "CPython" is used in contexts when necessary to distinguish this
- implementation from others such as Jython or IronPython.
+ The canonical implementation of the Python programming language, as
+ distributed on `python.org <http://python.org>`_. The term "CPython"
+ is used when necessary to distinguish this implementation from others
+ such as Jython or IronPython.
 
 decorator
 A function returning another function, usually applied as a function
@@ -253,16 +254,25 @@
 See :term:`global interpreter lock`.
 
 global interpreter lock
- The lock used by Python threads to assure that only one thread
- executes in the :term:`CPython` :term:`virtual machine` at a time.
- This simplifies the CPython implementation by assuring that no two
- processes can access the same memory at the same time. Locking the
- entire interpreter makes it easier for the interpreter to be
- multi-threaded, at the expense of much of the parallelism afforded by
- multi-processor machines. Efforts have been made in the past to
- create a "free-threaded" interpreter (one which locks shared data at a
- much finer granularity), but so far none have been successful because
- performance suffered in the common single-processor case.
+ The mechanism used by the :term:`CPython` interpreter to assure that
+ only one thread executes Python :term:`bytecode` at a time.
+ This simplifies the CPython implementation by making the object model
+ (including critical built-in types such as :class:`dict`) implicitly
+ safe against concurrent access. Locking the entire interpreter
+ makes it easier for the interpreter to be multi-threaded, at the
+ expense of much of the parallelism afforded by multi-processor
+ machines.
+
+ However, some extension modules, either standard or third-party,
+ are designed so as to release the GIL when doing computationally-intensive
+ tasks such as compression or hashing. Also, the GIL is always released
+ when doing I/O.
+
+ Past efforts to create a "free-threaded" interpreter (one which locks
+ shared data at a much finer granularity) have not been successful
+ because performance suffered in the common single-processor case. It
+ is believed that overcoming this performance issue would make the
+ implementation much more complicated and therefore costlier to maintain.
 
 hashable
 An object is *hashable* if it has a hash value which never changes during
Modified: python/branches/release27-maint/Doc/library/threading.rst
==============================================================================
--- python/branches/release27-maint/Doc/library/threading.rst	(original)
+++ python/branches/release27-maint/Doc/library/threading.rst	Thu Jan 6 17:35:14 2011
@@ -26,11 +26,22 @@
 Starting with Python 2.5, several Thread methods raise :exc:`RuntimeError`
 instead of :exc:`AssertionError` if called erroneously.
 
+.. impl-detail::
+
+ Due to the :term:`Global Interpreter Lock`, in CPython 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 of use of the computational
+ resources of multi-core machines, you are advised to use
+ :mod:`multiprocessing`. However, threading is still an appropriate model
+ if you want to run multiple I/O-bound tasks simultaneously.
+
 .. seealso::
 
 Latest version of the `threading module Python source code
 <http://svn.python.org/view/python/branches/release27-maint/Lib/threading.py?view=markup>`_
 
+
 This module defines the following functions and objects:
 
 .. function:: active_count()


More information about the Python-checkins mailing list

AltStyle によって変換されたページ (->オリジナル) /