Ignore:
Timestamp:
Mar 19, 2014, 11:31:01 PM (11 years ago)
Author:
dmik
Message:

python: Merge vendor 2.7.6 to trunk.

Location:
python/trunk
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • python/trunk

  • python/trunk/Doc/c-api/init.rst

    r2 r391  
    99
    1010
    11 .. cfunction:: void Py_Initialize()
     11Initializing and finalizing the interpreter
     12===========================================
     13
     14
     15.. c:function:: void Py_Initialize()
    1216
    1317   .. index::
     
    2327      triple: module; search; path
    2428      single: PySys_SetArgv()
     29      single: PySys_SetArgvEx()
    2530      single: Py_Finalize()
    2631
    2732   Initialize the Python interpreter.  In an application embedding  Python, this
    2833   should be called before using any other Python/C API functions; with the
    29    exception of :cfunc:`Py_SetProgramName`, :cfunc:`PyEval_InitThreads`,
    30    :cfunc:`PyEval_ReleaseLock`, and :cfunc:`PyEval_AcquireLock`. This initializes
     34   exception of :c:func:`Py_SetProgramName`, :c:func:`Py_SetPythonHome`, :c:func:`PyEval_InitThreads`,
     35   :c:func:`PyEval_ReleaseLock`, and :c:func:`PyEval_AcquireLock`. This initializes
    3136   the table of loaded modules (``sys.modules``), and creates the fundamental
    3237   modules :mod:`__builtin__`, :mod:`__main__` and :mod:`sys`.  It also initializes
    3338   the module search path (``sys.path``). It does not set ``sys.argv``; use
    34    :cfunc:`PySys_SetArgv` for that.  This is a no-op when called for a second time
    35    (without calling :cfunc:`Py_Finalize` first).  There is no return value; it is a
     39   :c:func:`PySys_SetArgvEx` for that.  This is a no-op when called for a second time
     40   (without calling :c:func:`Py_Finalize` first).  There is no return value; it is a
    3641   fatal error if the initialization fails.
    3742
    3843
    39 .. cfunction:: void Py_InitializeEx(int initsigs)
    40 
    41    This function works like :cfunc:`Py_Initialize` if *initsigs* is 1. If
     44.. c:function:: void Py_InitializeEx(int initsigs)
     45
     46   This function works like :c:func:`Py_Initialize` if *initsigs* is 1. If
    4247   *initsigs* is 0, it skips initialization registration of signal handlers, which
    4348   might be useful when Python is embedded.
     
    4651
    4752
    48 .. cfunction:: int Py_IsInitialized()
     53.. c:function:: int Py_IsInitialized()
    4954
    5055   Return true (nonzero) when the Python interpreter has been initialized, false
    51    (zero) if not.  After :cfunc:`Py_Finalize` is called, this returns false until
    52    :cfunc:`Py_Initialize` is called again.
    53 
    54 
    55 .. cfunction:: void Py_Finalize()
    56 
    57    Undo all initializations made by :cfunc:`Py_Initialize` and subsequent use of
     56   (zero) if not.  After :c:func:`Py_Finalize` is called, this returns false until
     57   :c:func:`Py_Initialize` is called again.
     58
     59
     60.. c:function:: void Py_Finalize()
     61
     62   Undo all initializations made by :c:func:`Py_Initialize` and subsequent use of
    5863   Python/C API functions, and destroy all sub-interpreters (see
    59    :cfunc:`Py_NewInterpreter` below) that were created and not yet destroyed since
    60    the last call to :cfunc:`Py_Initialize`.  Ideally, this frees all memory
     64   :c:func:`Py_NewInterpreter` below) that were created and not yet destroyed since
     65   the last call to :c:func:`Py_Initialize`.  Ideally, this frees all memory
    6166   allocated by the Python interpreter.  This is a no-op when called for a second
    62    time (without calling :cfunc:`Py_Initialize` again first).  There is no return
     67   time (without calling :c:func:`Py_Initialize` again first).  There is no return
    6368   value; errors during finalization are ignored.
    6469
     
    7984   freed.  Some memory allocated by extension modules may not be freed.  Some
    8085   extensions may not work properly if their initialization routine is called more
    81    than once; this can happen if an application calls :cfunc:`Py_Initialize` and
    82    :cfunc:`Py_Finalize` more than once.
    83 
    84 
    85 .. cfunction:: PyThreadState* Py_NewInterpreter()
     86   than once; this can happen if an application calls :c:func:`Py_Initialize` and
     87   :c:func:`Py_Finalize` more than once.
     88
     89
     90Process-wide parameters
     91=======================
     92
     93
     94.. c:function:: void Py_SetProgramName(char *name)
    8695
    8796   .. index::
    88       module: __builtin__
     97      single: Py_Initialize()
     98      single: main()
     99      single: Py_GetPath()
     100
     101   This function should be called before :c:func:`Py_Initialize` is called for
     102   the first time, if it is called at all.  It tells the interpreter the value
     103   of the ``argv[0]`` argument to the :c:func:`main` function of the program.
     104   This is used by :c:func:`Py_GetPath` and some other functions below to find
     105   the Python run-time libraries relative to the interpreter executable.  The
     106   default value is ``'python'``.  The argument should point to a
     107   zero-terminated character string in static storage whose contents will not
     108   change for the duration of the program's execution.  No code in the Python
     109   interpreter will change the contents of this storage.
     110
     111
     112.. c:function:: char* Py_GetProgramName()
     113
     114   .. index:: single: Py_SetProgramName()
     115
     116   Return the program name set with :c:func:`Py_SetProgramName`, or the default.
     117   The returned string points into static storage; the caller should not modify its
     118   value.
     119
     120
     121.. c:function:: char* Py_GetPrefix()
     122
     123   Return the *prefix* for installed platform-independent files. This is derived
     124   through a number of complicated rules from the program name set with
     125   :c:func:`Py_SetProgramName` and some environment variables; for example, if the
     126   program name is ``'/usr/local/bin/python'``, the prefix is ``'/usr/local'``. The
     127   returned string points into static storage; the caller should not modify its
     128   value.  This corresponds to the :makevar:`prefix` variable in the top-level
     129   :file:`Makefile` and the ``--prefix`` argument to the :program:`configure`
     130   script at build time.  The value is available to Python code as ``sys.prefix``.
     131   It is only useful on Unix.  See also the next function.
     132
     133
     134.. c:function:: char* Py_GetExecPrefix()
     135
     136   Return the *exec-prefix* for installed platform-*dependent* files.  This is
     137   derived through a number of complicated rules from the program name set with
     138   :c:func:`Py_SetProgramName` and some environment variables; for example, if the
     139   program name is ``'/usr/local/bin/python'``, the exec-prefix is
     140   ``'/usr/local'``.  The returned string points into static storage; the caller
     141   should not modify its value.  This corresponds to the :makevar:`exec_prefix`
     142   variable in the top-level :file:`Makefile` and the ``--exec-prefix``
     143   argument to the :program:`configure` script at build  time.  The value is
     144   available to Python code as ``sys.exec_prefix``.  It is only useful on Unix.
     145
     146   Background: The exec-prefix differs from the prefix when platform dependent
     147   files (such as executables and shared libraries) are installed in a different
     148   directory tree.  In a typical installation, platform dependent files may be
     149   installed in the :file:`/usr/local/plat` subtree while platform independent may
     150   be installed in :file:`/usr/local`.
     151
     152   Generally speaking, a platform is a combination of hardware and software
     153   families, e.g.  Sparc machines running the Solaris 2.x operating system are
     154   considered the same platform, but Intel machines running Solaris 2.x are another
     155   platform, and Intel machines running Linux are yet another platform.  Different
     156   major revisions of the same operating system generally also form different
     157   platforms.  Non-Unix operating systems are a different story; the installation
     158   strategies on those systems are so different that the prefix and exec-prefix are
     159   meaningless, and set to the empty string. Note that compiled Python bytecode
     160   files are platform independent (but not independent from the Python version by
     161   which they were compiled!).
     162
     163   System administrators will know how to configure the :program:`mount` or
     164   :program:`automount` programs to share :file:`/usr/local` between platforms
     165   while having :file:`/usr/local/plat` be a different filesystem for each
     166   platform.
     167
     168
     169.. c:function:: char* Py_GetProgramFullPath()
     170
     171   .. index::
     172      single: Py_SetProgramName()
     173      single: executable (in module sys)
     174
     175   Return the full program name of the Python executable; this is  computed as a
     176   side-effect of deriving the default module search path  from the program name
     177   (set by :c:func:`Py_SetProgramName` above). The returned string points into
     178   static storage; the caller should not modify its value.  The value is available
     179   to Python code as ``sys.executable``.
     180
     181
     182.. c:function:: char* Py_GetPath()
     183
     184   .. index::
     185      triple: module; search; path
     186      single: path (in module sys)
     187
     188   Return the default module search path; this is computed from the program name
     189   (set by :c:func:`Py_SetProgramName` above) and some environment variables.
     190   The returned string consists of a series of directory names separated by a
     191   platform dependent delimiter character.  The delimiter character is ``':'``
     192   on Unix and Mac OS X, ``';'`` on Windows.  The returned string points into
     193   static storage; the caller should not modify its value.  The list
     194   :data:`sys.path` is initialized with this value on interpreter startup; it
     195   can be (and usually is) modified later to change the search path for loading
     196   modules.
     197
     198   .. XXX should give the exact rules
     199
     200
     201.. c:function:: const char* Py_GetVersion()
     202
     203   Return the version of this Python interpreter.  This is a string that looks
     204   something like ::
     205
     206      "1.5 (#67, Dec 31 1997, 22:34:28) [GCC 2.7.2.2]"
     207
     208   .. index:: single: version (in module sys)
     209
     210   The first word (up to the first space character) is the current Python version;
     211   the first three characters are the major and minor version separated by a
     212   period.  The returned string points into static storage; the caller should not
     213   modify its value.  The value is available to Python code as ``sys.version``.
     214
     215
     216.. c:function:: const char* Py_GetPlatform()
     217
     218   .. index:: single: platform (in module sys)
     219
     220   Return the platform identifier for the current platform.  On Unix, this is
     221   formed from the "official" name of the operating system, converted to lower
     222   case, followed by the major revision number; e.g., for Solaris 2.x, which is
     223   also known as SunOS 5.x, the value is ``'sunos5'``.  On Mac OS X, it is
     224   ``'darwin'``.  On Windows, it is ``'win'``.  The returned string points into
     225   static storage; the caller should not modify its value.  The value is available
     226   to Python code as ``sys.platform``.
     227
     228
     229.. c:function:: const char* Py_GetCopyright()
     230
     231   Return the official copyright string for the current Python version, for example
     232
     233   ``'Copyright 1991-1995 Stichting Mathematisch Centrum, Amsterdam'``
     234
     235   .. index:: single: copyright (in module sys)
     236
     237   The returned string points into static storage; the caller should not modify its
     238   value.  The value is available to Python code as ``sys.copyright``.
     239
     240
     241.. c:function:: const char* Py_GetCompiler()
     242
     243   Return an indication of the compiler used to build the current Python version,
     244   in square brackets, for example::
     245
     246      "[GCC 2.7.2.2]"
     247
     248   .. index:: single: version (in module sys)
     249
     250   The returned string points into static storage; the caller should not modify its
     251   value.  The value is available to Python code as part of the variable
     252   ``sys.version``.
     253
     254
     255.. c:function:: const char* Py_GetBuildInfo()
     256
     257   Return information about the sequence number and build date and time  of the
     258   current Python interpreter instance, for example ::
     259
     260      "#67, Aug  1 1997, 22:34:28"
     261
     262   .. index:: single: version (in module sys)
     263
     264   The returned string points into static storage; the caller should not modify its
     265   value.  The value is available to Python code as part of the variable
     266   ``sys.version``.
     267
     268
     269.. c:function:: void PySys_SetArgvEx(int argc, char **argv, int updatepath)
     270
     271   .. index::
     272      single: main()
     273      single: Py_FatalError()
     274      single: argv (in module sys)
     275
     276   Set :data:`sys.argv` based on *argc* and *argv*.  These parameters are
     277   similar to those passed to the program's :c:func:`main` function with the
     278   difference that the first entry should refer to the script file to be
     279   executed rather than the executable hosting the Python interpreter.  If there
     280   isn't a script that will be run, the first entry in *argv* can be an empty
     281   string.  If this function fails to initialize :data:`sys.argv`, a fatal
     282   condition is signalled using :c:func:`Py_FatalError`.
     283
     284   If *updatepath* is zero, this is all the function does.  If *updatepath*
     285   is non-zero, the function also modifies :data:`sys.path` according to the
     286   following algorithm:
     287
     288   - If the name of an existing script is passed in ``argv[0]``, the absolute
     289     path of the directory where the script is located is prepended to
     290     :data:`sys.path`.
     291   - Otherwise (that is, if *argc* is 0 or ``argv[0]`` doesn't point
     292     to an existing file name), an empty string is prepended to
     293     :data:`sys.path`, which is the same as prepending the current working
     294     directory (``"."``).
     295
     296   .. note::
     297      It is recommended that applications embedding the Python interpreter
     298      for purposes other than executing a single script pass 0 as *updatepath*,
     299      and update :data:`sys.path` themselves if desired.
     300      See `CVE-2008-5983 <http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2008-5983>`_.
     301
     302      On versions before 2.6.6, you can achieve the same effect by manually
     303      popping the first :data:`sys.path` element after having called
     304      :c:func:`PySys_SetArgv`, for example using::
     305
     306         PyRun_SimpleString("import sys; sys.path.pop(0)\n");
     307
     308   .. versionadded:: 2.6.6
     309
     310   .. XXX impl. doesn't seem consistent in allowing 0/NULL for the params;
     311      check w/ Guido.
     312
     313
     314.. c:function:: void PySys_SetArgv(int argc, char **argv)
     315
     316   This function works like :c:func:`PySys_SetArgvEx` with *updatepath* set to 1.
     317
     318
     319.. c:function:: void Py_SetPythonHome(char *home)
     320
     321   Set the default "home" directory, that is, the location of the standard
     322   Python libraries.  See :envvar:`PYTHONHOME` for the meaning of the
     323   argument string.
     324
     325   The argument should point to a zero-terminated character string in static
     326   storage whose contents will not change for the duration of the program's
     327   execution.  No code in the Python interpreter will change the contents of
     328   this storage.
     329
     330
     331.. c:function:: char* Py_GetPythonHome()
     332
     333   Return the default "home", that is, the value set by a previous call to
     334   :c:func:`Py_SetPythonHome`, or the value of the :envvar:`PYTHONHOME`
     335   environment variable if it is set.
     336
     337
     338.. _threads:
     339
     340Thread State and the Global Interpreter Lock
     341============================================
     342
     343.. index::
     344   single: GIL
     345   single: global interpreter lock
     346   single: interpreter lock
     347   single: lock, interpreter
     348
     349The Python interpreter is not fully thread-safe.  In order to support
     350multi-threaded Python programs, there's a global lock, called the :term:`global
     351interpreter lock` or :term:`GIL`, that must be held by the current thread before
     352it can safely access Python objects. Without the lock, even the simplest
     353operations could cause problems in a multi-threaded program: for example, when
     354two threads simultaneously increment the reference count of the same object, the
     355reference count could end up being incremented only once instead of twice.
     356
     357.. index:: single: setcheckinterval() (in module sys)
     358
     359Therefore, the rule exists that only the thread that has acquired the
     360:term:`GIL` may operate on Python objects or call Python/C API functions.
     361In order to emulate concurrency of execution, the interpreter regularly
     362tries to switch threads (see :func:`sys.setcheckinterval`).  The lock is also
     363released around potentially blocking I/O operations like reading or writing
     364a file, so that other Python threads can run in the meantime.
     365
     366.. index::
     367   single: PyThreadState
     368   single: PyThreadState
     369
     370The Python interpreter keeps some thread-specific bookkeeping information
     371inside a data structure called :c:type:`PyThreadState`.  There's also one
     372global variable pointing to the current :c:type:`PyThreadState`: it can
     373be retrieved using :c:func:`PyThreadState_Get`.
     374
     375Releasing the GIL from extension code
     376-------------------------------------
     377
     378Most extension code manipulating the :term:`GIL` has the following simple
     379structure::
     380
     381   Save the thread state in a local variable.
     382   Release the global interpreter lock.
     383   ... Do some blocking I/O operation ...
     384   Reacquire the global interpreter lock.
     385   Restore the thread state from the local variable.
     386
     387This is so common that a pair of macros exists to simplify it::
     388
     389   Py_BEGIN_ALLOW_THREADS
     390   ... Do some blocking I/O operation ...
     391   Py_END_ALLOW_THREADS
     392
     393.. index::
     394   single: Py_BEGIN_ALLOW_THREADS
     395   single: Py_END_ALLOW_THREADS
     396
     397The :c:macro:`Py_BEGIN_ALLOW_THREADS` macro opens a new block and declares a
     398hidden local variable; the :c:macro:`Py_END_ALLOW_THREADS` macro closes the
     399block.  These two macros are still available when Python is compiled without
     400thread support (they simply have an empty expansion).
     401
     402When thread support is enabled, the block above expands to the following code::
     403
     404   PyThreadState *_save;
     405
     406   _save = PyEval_SaveThread();
     407   ...Do some blocking I/O operation...
     408   PyEval_RestoreThread(_save);
     409
     410.. index::
     411   single: PyEval_RestoreThread()
     412   single: PyEval_SaveThread()
     413
     414Here is how these functions work: the global interpreter lock is used to protect the pointer to the
     415current thread state.  When releasing the lock and saving the thread state,
     416the current thread state pointer must be retrieved before the lock is released
     417(since another thread could immediately acquire the lock and store its own thread
     418state in the global variable). Conversely, when acquiring the lock and restoring
     419the thread state, the lock must be acquired before storing the thread state
     420pointer.
     421
     422.. note::
     423   Calling system I/O functions is the most common use case for releasing
     424   the GIL, but it can also be useful before calling long-running computations
     425   which don't need access to Python objects, such as compression or
     426   cryptographic functions operating over memory buffers.  For example, the
     427   standard :mod:`zlib` and :mod:`hashlib` modules release the GIL when
     428   compressing or hashing data.
     429
     430
     431.. _gilstate:
     432
     433Non-Python created threads
     434--------------------------
     435
     436When threads are created using the dedicated Python APIs (such as the
     437:mod:`threading` module), a thread state is automatically associated to them
     438and the code showed above is therefore correct.  However, when threads are
     439created from C (for example by a third-party library with its own thread
     440management), they don't hold the GIL, nor is there a thread state structure
     441for them.
     442
     443If you need to call Python code from these threads (often this will be part
     444of a callback API provided by the aforementioned third-party library),
     445you must first register these threads with the interpreter by
     446creating a thread state data structure, then acquiring the GIL, and finally
     447storing their thread state pointer, before you can start using the Python/C
     448API.  When you are done, you should reset the thread state pointer, release
     449the GIL, and finally free the thread state data structure.
     450
     451The :c:func:`PyGILState_Ensure` and :c:func:`PyGILState_Release` functions do
     452all of the above automatically.  The typical idiom for calling into Python
     453from a C thread is::
     454
     455   PyGILState_STATE gstate;
     456   gstate = PyGILState_Ensure();
     457
     458   /* Perform Python actions here. */
     459   result = CallSomeFunction();
     460   /* evaluate result or handle exception */
     461
     462   /* Release the thread. No Python API allowed beyond this point. */
     463   PyGILState_Release(gstate);
     464
     465Note that the :c:func:`PyGILState_\*` functions assume there is only one global
     466interpreter (created automatically by :c:func:`Py_Initialize`).  Python
     467supports the creation of additional interpreters (using
     468:c:func:`Py_NewInterpreter`), but mixing multiple interpreters and the
     469:c:func:`PyGILState_\*` API is unsupported.
     470
     471Another important thing to note about threads is their behaviour in the face
     472of the C :c:func:`fork` call. On most systems with :c:func:`fork`, after a
     473process forks only the thread that issued the fork will exist. That also
     474means any locks held by other threads will never be released. Python solves
     475this for :func:`os.fork` by acquiring the locks it uses internally before
     476the fork, and releasing them afterwards. In addition, it resets any
     477:ref:`lock-objects` in the child. When extending or embedding Python, there
     478is no way to inform Python of additional (non-Python) locks that need to be
     479acquired before or reset after a fork. OS facilities such as
     480:c:func:`pthread_atfork` would need to be used to accomplish the same thing.
     481Additionally, when extending or embedding Python, calling :c:func:`fork`
     482directly rather than through :func:`os.fork` (and returning to or calling
     483into Python) may result in a deadlock by one of Python's internal locks
     484being held by a thread that is defunct after the fork.
     485:c:func:`PyOS_AfterFork` tries to reset the necessary locks, but is not
     486always able to.
     487
     488
     489High-level API
     490--------------
     491
     492These are the most commonly used types and functions when writing C extension
     493code, or when embedding the Python interpreter:
     494
     495.. c:type:: PyInterpreterState
     496
     497   This data structure represents the state shared by a number of cooperating
     498   threads.  Threads belonging to the same interpreter share their module
     499   administration and a few other internal items. There are no public members in
     500   this structure.
     501
     502   Threads belonging to different interpreters initially share nothing, except
     503   process state like available memory, open file descriptors and such.  The global
     504   interpreter lock is also shared by all threads, regardless of to which
     505   interpreter they belong.
     506
     507
     508.. c:type:: PyThreadState
     509
     510   This data structure represents the state of a single thread.  The only public
     511   data member is :c:type:`PyInterpreterState \*`:attr:`interp`, which points to
     512   this thread's interpreter state.
     513
     514
     515.. c:function:: void PyEval_InitThreads()
     516
     517   .. index::
     518      single: PyEval_ReleaseLock()
     519      single: PyEval_ReleaseThread()
     520      single: PyEval_SaveThread()
     521      single: PyEval_RestoreThread()
     522
     523   Initialize and acquire the global interpreter lock.  It should be called in the
     524   main thread before creating a second thread or engaging in any other thread
     525   operations such as :c:func:`PyEval_ReleaseLock` or
     526   ``PyEval_ReleaseThread(tstate)``. It is not needed before calling
     527   :c:func:`PyEval_SaveThread` or :c:func:`PyEval_RestoreThread`.
     528
     529   .. index:: single: Py_Initialize()
     530
     531   This is a no-op when called for a second time.  It is safe to call this function
     532   before calling :c:func:`Py_Initialize`.
     533
     534   .. index:: module: thread
     535
     536   .. note::
     537      When only the main thread exists, no GIL operations are needed. This is a
     538      common situation (most Python programs do not use threads), and the lock
     539      operations slow the interpreter down a bit. Therefore, the lock is not
     540      created initially.  This situation is equivalent to having acquired the lock:
     541      when there is only a single thread, all object accesses are safe.  Therefore,
     542      when this function initializes the global interpreter lock, it also acquires
     543      it.  Before the Python :mod:`_thread` module creates a new thread, knowing
     544      that either it has the lock or the lock hasn't been created yet, it calls
     545      :c:func:`PyEval_InitThreads`.  When this call returns, it is guaranteed that
     546      the lock has been created and that the calling thread has acquired it.
     547
     548      It is **not** safe to call this function when it is unknown which thread (if
     549      any) currently has the global interpreter lock.
     550
     551      This function is not available when thread support is disabled at compile time.
     552
     553
     554.. c:function:: int PyEval_ThreadsInitialized()
     555
     556   Returns a non-zero value if :c:func:`PyEval_InitThreads` has been called.  This
     557   function can be called without holding the GIL, and therefore can be used to
     558   avoid calls to the locking API when running single-threaded.  This function is
     559   not available when thread support is disabled at compile time.
     560
     561   .. versionadded:: 2.4
     562
     563
     564.. c:function:: PyThreadState* PyEval_SaveThread()
     565
     566   Release the global interpreter lock (if it has been created and thread
     567   support is enabled) and reset the thread state to *NULL*, returning the
     568   previous thread state (which is not *NULL*).  If the lock has been created,
     569   the current thread must have acquired it.  (This function is available even
     570   when thread support is disabled at compile time.)
     571
     572
     573.. c:function:: void PyEval_RestoreThread(PyThreadState *tstate)
     574
     575   Acquire the global interpreter lock (if it has been created and thread
     576   support is enabled) and set the thread state to *tstate*, which must not be
     577   *NULL*.  If the lock has been created, the current thread must not have
     578   acquired it, otherwise deadlock ensues.  (This function is available even
     579   when thread support is disabled at compile time.)
     580
     581
     582.. c:function:: PyThreadState* PyThreadState_Get()
     583
     584   Return the current thread state.  The global interpreter lock must be held.
     585   When the current thread state is *NULL*, this issues a fatal error (so that
     586   the caller needn't check for *NULL*).
     587
     588
     589.. c:function:: PyThreadState* PyThreadState_Swap(PyThreadState *tstate)
     590
     591   Swap the current thread state with the thread state given by the argument
     592   *tstate*, which may be *NULL*.  The global interpreter lock must be held
     593   and is not released.
     594
     595
     596.. c:function:: void PyEval_ReInitThreads()
     597
     598   This function is called from :c:func:`PyOS_AfterFork` to ensure that newly
     599   created child processes don't hold locks referring to threads which
     600   are not running in the child process.
     601
     602
     603The following functions use thread-local storage, and are not compatible
     604with sub-interpreters:
     605
     606.. c:function:: PyGILState_STATE PyGILState_Ensure()
     607
     608   Ensure that the current thread is ready to call the Python C API regardless
     609   of the current state of Python, or of the global interpreter lock. This may
     610   be called as many times as desired by a thread as long as each call is
     611   matched with a call to :c:func:`PyGILState_Release`. In general, other
     612   thread-related APIs may be used between :c:func:`PyGILState_Ensure` and
     613   :c:func:`PyGILState_Release` calls as long as the thread state is restored to
     614   its previous state before the Release().  For example, normal usage of the
     615   :c:macro:`Py_BEGIN_ALLOW_THREADS` and :c:macro:`Py_END_ALLOW_THREADS` macros is
     616   acceptable.
     617
     618   The return value is an opaque "handle" to the thread state when
     619   :c:func:`PyGILState_Ensure` was called, and must be passed to
     620   :c:func:`PyGILState_Release` to ensure Python is left in the same state. Even
     621   though recursive calls are allowed, these handles *cannot* be shared - each
     622   unique call to :c:func:`PyGILState_Ensure` must save the handle for its call
     623   to :c:func:`PyGILState_Release`.
     624
     625   When the function returns, the current thread will hold the GIL and be able
     626   to call arbitrary Python code.  Failure is a fatal error.
     627
     628   .. versionadded:: 2.3
     629
     630
     631.. c:function:: void PyGILState_Release(PyGILState_STATE)
     632
     633   Release any resources previously acquired.  After this call, Python's state will
     634   be the same as it was prior to the corresponding :c:func:`PyGILState_Ensure` call
     635   (but generally this state will be unknown to the caller, hence the use of the
     636   GILState API).
     637
     638   Every call to :c:func:`PyGILState_Ensure` must be matched by a call to
     639   :c:func:`PyGILState_Release` on the same thread.
     640
     641   .. versionadded:: 2.3
     642
     643
     644.. c:function:: PyThreadState PyGILState_GetThisThreadState()
     645
     646   Get the current thread state for this thread.  May return ``NULL`` if no
     647   GILState API has been used on the current thread.  Note that the main thread
     648   always has such a thread-state, even if no auto-thread-state call has been
     649   made on the main thread.  This is mainly a helper/diagnostic function.
     650
     651   .. versionadded:: 2.3
     652
     653
     654The following macros are normally used without a trailing semicolon; look for
     655example usage in the Python source distribution.
     656
     657
     658.. c:macro:: Py_BEGIN_ALLOW_THREADS
     659
     660   This macro expands to ``{ PyThreadState *_save; _save = PyEval_SaveThread();``.
     661   Note that it contains an opening brace; it must be matched with a following
     662   :c:macro:`Py_END_ALLOW_THREADS` macro.  See above for further discussion of this
     663   macro.  It is a no-op when thread support is disabled at compile time.
     664
     665
     666.. c:macro:: Py_END_ALLOW_THREADS
     667
     668   This macro expands to ``PyEval_RestoreThread(_save); }``. Note that it contains
     669   a closing brace; it must be matched with an earlier
     670   :c:macro:`Py_BEGIN_ALLOW_THREADS` macro.  See above for further discussion of
     671   this macro.  It is a no-op when thread support is disabled at compile time.
     672
     673
     674.. c:macro:: Py_BLOCK_THREADS
     675
     676   This macro expands to ``PyEval_RestoreThread(_save);``: it is equivalent to
     677   :c:macro:`Py_END_ALLOW_THREADS` without the closing brace.  It is a no-op when
     678   thread support is disabled at compile time.
     679
     680
     681.. c:macro:: Py_UNBLOCK_THREADS
     682
     683   This macro expands to ``_save = PyEval_SaveThread();``: it is equivalent to
     684   :c:macro:`Py_BEGIN_ALLOW_THREADS` without the opening brace and variable
     685   declaration.  It is a no-op when thread support is disabled at compile time.
     686
     687
     688Low-level API
     689-------------
     690
     691All of the following functions are only available when thread support is enabled
     692at compile time, and must be called only when the global interpreter lock has
     693been created.
     694
     695
     696.. c:function:: PyInterpreterState* PyInterpreterState_New()
     697
     698   Create a new interpreter state object.  The global interpreter lock need not
     699   be held, but may be held if it is necessary to serialize calls to this
     700   function.
     701
     702
     703.. c:function:: void PyInterpreterState_Clear(PyInterpreterState *interp)
     704
     705   Reset all information in an interpreter state object.  The global interpreter
     706   lock must be held.
     707
     708
     709.. c:function:: void PyInterpreterState_Delete(PyInterpreterState *interp)
     710
     711   Destroy an interpreter state object.  The global interpreter lock need not be
     712   held.  The interpreter state must have been reset with a previous call to
     713   :c:func:`PyInterpreterState_Clear`.
     714
     715
     716.. c:function:: PyThreadState* PyThreadState_New(PyInterpreterState *interp)
     717
     718   Create a new thread state object belonging to the given interpreter object.
     719   The global interpreter lock need not be held, but may be held if it is
     720   necessary to serialize calls to this function.
     721
     722
     723.. c:function:: void PyThreadState_Clear(PyThreadState *tstate)
     724
     725   Reset all information in a thread state object.  The global interpreter lock
     726   must be held.
     727
     728
     729.. c:function:: void PyThreadState_Delete(PyThreadState *tstate)
     730
     731   Destroy a thread state object.  The global interpreter lock need not be held.
     732   The thread state must have been reset with a previous call to
     733   :c:func:`PyThreadState_Clear`.
     734
     735
     736.. c:function:: PyObject* PyThreadState_GetDict()
     737
     738   Return a dictionary in which extensions can store thread-specific state
     739   information.  Each extension should use a unique key to use to store state in
     740   the dictionary.  It is okay to call this function when no current thread state
     741   is available. If this function returns *NULL*, no exception has been raised and
     742   the caller should assume no current thread state is available.
     743
     744   .. versionchanged:: 2.3
     745      Previously this could only be called when a current thread is active, and *NULL*
     746      meant that an exception was raised.
     747
     748
     749.. c:function:: int PyThreadState_SetAsyncExc(long id, PyObject *exc)
     750
     751   Asynchronously raise an exception in a thread. The *id* argument is the thread
     752   id of the target thread; *exc* is the exception object to be raised. This
     753   function does not steal any references to *exc*. To prevent naive misuse, you
     754   must write your own C extension to call this.  Must be called with the GIL held.
     755   Returns the number of thread states modified; this is normally one, but will be
     756   zero if the thread id isn't found.  If *exc* is :const:`NULL`, the pending
     757   exception (if any) for the thread is cleared. This raises no exceptions.
     758
     759   .. versionadded:: 2.3
     760
     761
     762.. c:function:: void PyEval_AcquireThread(PyThreadState *tstate)
     763
     764   Acquire the global interpreter lock and set the current thread state to
     765   *tstate*, which should not be *NULL*.  The lock must have been created earlier.
     766   If this thread already has the lock, deadlock ensues.
     767
     768   :c:func:`PyEval_RestoreThread` is a higher-level function which is always
     769   available (even when thread support isn't enabled or when threads have
     770   not been initialized).
     771
     772
     773.. c:function:: void PyEval_ReleaseThread(PyThreadState *tstate)
     774
     775   Reset the current thread state to *NULL* and release the global interpreter
     776   lock.  The lock must have been created earlier and must be held by the current
     777   thread.  The *tstate* argument, which must not be *NULL*, is only used to check
     778   that it represents the current thread state --- if it isn't, a fatal error is
     779   reported.
     780
     781   :c:func:`PyEval_SaveThread` is a higher-level function which is always
     782   available (even when thread support isn't enabled or when threads have
     783   not been initialized).
     784
     785
     786.. c:function:: void PyEval_AcquireLock()
     787
     788   Acquire the global interpreter lock.  The lock must have been created earlier.
     789   If this thread already has the lock, a deadlock ensues.
     790
     791   .. warning::
     792      This function does not change the current thread state.  Please use
     793      :c:func:`PyEval_RestoreThread` or :c:func:`PyEval_AcquireThread`
     794      instead.
     795
     796
     797.. c:function:: void PyEval_ReleaseLock()
     798
     799   Release the global interpreter lock.  The lock must have been created earlier.
     800
     801   .. warning::
     802      This function does not change the current thread state.  Please use
     803      :c:func:`PyEval_SaveThread` or :c:func:`PyEval_ReleaseThread`
     804      instead.
     805
     806
     807Sub-interpreter support
     808=======================
     809
     810While in most uses, you will only embed a single Python interpreter, there
     811are cases where you need to create several independent interpreters in the
     812same process and perhaps even in the same thread.  Sub-interpreters allow
     813you to do that.  You can switch between sub-interpreters using the
     814:c:func:`PyThreadState_Swap` function.  You can create and destroy them
     815using the following functions:
     816
     817
     818.. c:function:: PyThreadState* Py_NewInterpreter()
     819
     820   .. index::
     821      module: builtins
    89822      module: __main__
    90823      module: sys
     
    96829   for the execution of Python code.  In particular, the new interpreter has
    97830   separate, independent versions of all imported modules, including the
    98    fundamental modules :mod:`__builtin__`, :mod:`__main__` and :mod:`sys`.  The
     831   fundamental modules :mod:`builtins`, :mod:`__main__` and :mod:`sys`.  The
    99832   table of loaded modules (``sys.modules``) and the module search path
    100833   (``sys.path``) are also separate.  The new environment has no ``sys.argv``
    101834   variable.  It has new standard I/O stream file objects ``sys.stdin``,
    102835   ``sys.stdout`` and ``sys.stderr`` (however these refer to the same underlying
    103    :ctype:`FILE` structures in the C library).
     836   file descriptors).
    104837
    105838   The return value points to the first thread state created in the new
     
    125858   not called.  Note that this is different from what happens when an extension is
    126859   imported after the interpreter has been completely re-initialized by calling
    127    :cfunc:`Py_Finalize` and :cfunc:`Py_Initialize`; in that case, the extension's
     860   :c:func:`Py_Finalize` and :c:func:`Py_Initialize`; in that case, the extension's
    128861   ``initmodule`` function *is* called again.
    129862
    130863   .. index:: single: close() (in module os)
    131864
    132    **Bugs and caveats:** Because sub-interpreters (and the main interpreter) are
    133    part of the same process, the insulation between them isn't perfect --- for
    134    example, using low-level file operations like  :func:`os.close` they can
    135    (accidentally or maliciously) affect each other's open files.  Because of the
    136    way extensions are shared between (sub-)interpreters, some extensions may not
    137    work properly; this is especially likely when the extension makes use of
    138    (static) global variables, or when the extension manipulates its module's
    139    dictionary after its initialization.  It is possible to insert objects created
    140    in one sub-interpreter into a namespace of another sub-interpreter; this should
    141    be done with great care to avoid sharing user-defined functions, methods,
    142    instances or classes between sub-interpreters, since import operations executed
    143    by such objects may affect the wrong (sub-)interpreter's dictionary of loaded
    144    modules.  (XXX This is a hard-to-fix bug that will be addressed in a future
    145    release.)
    146 
    147    Also note that the use of this functionality is incompatible with extension
    148    modules such as PyObjC and ctypes that use the :cfunc:`PyGILState_\*` APIs (and
    149    this is inherent in the way the :cfunc:`PyGILState_\*` functions work).  Simple
    150    things may work, but confusing behavior will always be near.
    151 
    152 
    153 .. cfunction:: void Py_EndInterpreter(PyThreadState *tstate)
     865
     866.. c:function:: void Py_EndInterpreter(PyThreadState *tstate)
    154867
    155868   .. index:: single: Py_Finalize()
     
    160873   thread states associated with this interpreter are destroyed.  (The global
    161874   interpreter lock must be held before calling this function and is still held
    162    when it returns.)  :cfunc:`Py_Finalize` will destroy all sub-interpreters that
     875   when it returns.)  :c:func:`Py_Finalize` will destroy all sub-interpreters that
    163876   haven't been explicitly destroyed at that point.
    164877
    165878
    166 .. cfunction:: void Py_SetProgramName(char *name)
    167 
    168    .. index::
    169       single: Py_Initialize()
    170       single: main()
    171       single: Py_GetPath()
    172 
    173    This function should be called before :cfunc:`Py_Initialize` is called for
    174    the first time, if it is called at all.  It tells the interpreter the value
    175    of the ``argv[0]`` argument to the :cfunc:`main` function of the program.
    176    This is used by :cfunc:`Py_GetPath` and some other functions below to find
    177    the Python run-time libraries relative to the interpreter executable.  The
    178    default value is ``'python'``.  The argument should point to a
    179    zero-terminated character string in static storage whose contents will not
    180    change for the duration of the program's execution.  No code in the Python
    181    interpreter will change the contents of this storage.
    182 
    183 
    184 .. cfunction:: char* Py_GetProgramName()
    185 
    186    .. index:: single: Py_SetProgramName()
    187 
    188    Return the program name set with :cfunc:`Py_SetProgramName`, or the default.
    189    The returned string points into static storage; the caller should not modify its
    190    value.
    191 
    192 
    193 .. cfunction:: char* Py_GetPrefix()
    194 
    195    Return the *prefix* for installed platform-independent files. This is derived
    196    through a number of complicated rules from the program name set with
    197    :cfunc:`Py_SetProgramName` and some environment variables; for example, if the
    198    program name is ``'/usr/local/bin/python'``, the prefix is ``'/usr/local'``. The
    199    returned string points into static storage; the caller should not modify its
    200    value.  This corresponds to the :makevar:`prefix` variable in the top-level
    201    :file:`Makefile` and the :option:`--prefix` argument to the :program:`configure`
    202    script at build time.  The value is available to Python code as ``sys.prefix``.
    203    It is only useful on Unix.  See also the next function.
    204 
    205 
    206 .. cfunction:: char* Py_GetExecPrefix()
    207 
    208    Return the *exec-prefix* for installed platform-*dependent* files.  This is
    209    derived through a number of complicated rules from the program name set with
    210    :cfunc:`Py_SetProgramName` and some environment variables; for example, if the
    211    program name is ``'/usr/local/bin/python'``, the exec-prefix is
    212    ``'/usr/local'``.  The returned string points into static storage; the caller
    213    should not modify its value.  This corresponds to the :makevar:`exec_prefix`
    214    variable in the top-level :file:`Makefile` and the :option:`--exec-prefix`
    215    argument to the :program:`configure` script at build  time.  The value is
    216    available to Python code as ``sys.exec_prefix``.  It is only useful on Unix.
    217 
    218    Background: The exec-prefix differs from the prefix when platform dependent
    219    files (such as executables and shared libraries) are installed in a different
    220    directory tree.  In a typical installation, platform dependent files may be
    221    installed in the :file:`/usr/local/plat` subtree while platform independent may
    222    be installed in :file:`/usr/local`.
    223 
    224    Generally speaking, a platform is a combination of hardware and software
    225    families, e.g.  Sparc machines running the Solaris 2.x operating system are
    226    considered the same platform, but Intel machines running Solaris 2.x are another
    227    platform, and Intel machines running Linux are yet another platform.  Different
    228    major revisions of the same operating system generally also form different
    229    platforms.  Non-Unix operating systems are a different story; the installation
    230    strategies on those systems are so different that the prefix and exec-prefix are
    231    meaningless, and set to the empty string. Note that compiled Python bytecode
    232    files are platform independent (but not independent from the Python version by
    233    which they were compiled!).
    234 
    235    System administrators will know how to configure the :program:`mount` or
    236    :program:`automount` programs to share :file:`/usr/local` between platforms
    237    while having :file:`/usr/local/plat` be a different filesystem for each
    238    platform.
    239 
    240 
    241 .. cfunction:: char* Py_GetProgramFullPath()
    242 
    243    .. index::
    244       single: Py_SetProgramName()
    245       single: executable (in module sys)
    246 
    247    Return the full program name of the Python executable; this is  computed as a
    248    side-effect of deriving the default module search path  from the program name
    249    (set by :cfunc:`Py_SetProgramName` above). The returned string points into
    250    static storage; the caller should not modify its value.  The value is available
    251    to Python code as ``sys.executable``.
    252 
    253 
    254 .. cfunction:: char* Py_GetPath()
    255 
    256    .. index::
    257       triple: module; search; path
    258       single: path (in module sys)
    259 
    260    Return the default module search path; this is computed from the  program name
    261    (set by :cfunc:`Py_SetProgramName` above) and some environment variables.  The
    262    returned string consists of a series of directory names separated by a platform
    263    dependent delimiter character.  The delimiter character is ``':'`` on Unix and
    264    Mac OS X, ``';'`` on Windows.  The returned string points into static storage;
    265    the caller should not modify its value.  The value is available to Python code
    266    as the list ``sys.path``, which may be modified to change the future search path
    267    for loaded modules.
    268 
    269    .. XXX should give the exact rules
    270 
    271 
    272 .. cfunction:: const char* Py_GetVersion()
    273 
    274    Return the version of this Python interpreter.  This is a string that looks
    275    something like ::
    276 
    277       "1.5 (#67, Dec 31 1997, 22:34:28) [GCC 2.7.2.2]"
    278 
    279    .. index:: single: version (in module sys)
    280 
    281    The first word (up to the first space character) is the current Python version;
    282    the first three characters are the major and minor version separated by a
    283    period.  The returned string points into static storage; the caller should not
    284    modify its value.  The value is available to Python code as ``sys.version``.
    285 
    286 
    287 .. cfunction:: const char* Py_GetBuildNumber()
    288 
    289    Return a string representing the Subversion revision that this Python executable
    290    was built from.  This number is a string because it may contain a trailing 'M'
    291    if Python was built from a mixed revision source tree.
    292 
    293    .. versionadded:: 2.5
    294 
    295 
    296 .. cfunction:: const char* Py_GetPlatform()
    297 
    298    .. index:: single: platform (in module sys)
    299 
    300    Return the platform identifier for the current platform.  On Unix, this is
    301    formed from the "official" name of the operating system, converted to lower
    302    case, followed by the major revision number; e.g., for Solaris 2.x, which is
    303    also known as SunOS 5.x, the value is ``'sunos5'``.  On Mac OS X, it is
    304    ``'darwin'``.  On Windows, it is ``'win'``.  The returned string points into
    305    static storage; the caller should not modify its value.  The value is available
    306    to Python code as ``sys.platform``.
    307 
    308 
    309 .. cfunction:: const char* Py_GetCopyright()
    310 
    311    Return the official copyright string for the current Python version, for example
    312 
    313    ``'Copyright 1991-1995 Stichting Mathematisch Centrum, Amsterdam'``
    314 
    315    .. index:: single: copyright (in module sys)
    316 
    317    The returned string points into static storage; the caller should not modify its
    318    value.  The value is available to Python code as ``sys.copyright``.
    319 
    320 
    321 .. cfunction:: const char* Py_GetCompiler()
    322 
    323    Return an indication of the compiler used to build the current Python version,
    324    in square brackets, for example::
    325 
    326       "[GCC 2.7.2.2]"
    327 
    328    .. index:: single: version (in module sys)
    329 
    330    The returned string points into static storage; the caller should not modify its
    331    value.  The value is available to Python code as part of the variable
    332    ``sys.version``.
    333 
    334 
    335 .. cfunction:: const char* Py_GetBuildInfo()
    336 
    337    Return information about the sequence number and build date and time  of the
    338    current Python interpreter instance, for example ::
    339 
    340       "#67, Aug  1 1997, 22:34:28"
    341 
    342    .. index:: single: version (in module sys)
    343 
    344    The returned string points into static storage; the caller should not modify its
    345    value.  The value is available to Python code as part of the variable
    346    ``sys.version``.
    347 
    348 
    349 .. cfunction:: void PySys_SetArgv(int argc, char **argv)
    350 
    351    .. index::
    352       single: main()
    353       single: Py_FatalError()
    354       single: argv (in module sys)
    355 
    356    Set :data:`sys.argv` based on *argc* and *argv*.  These parameters are
    357    similar to those passed to the program's :cfunc:`main` function with the
    358    difference that the first entry should refer to the script file to be
    359    executed rather than the executable hosting the Python interpreter.  If there
    360    isn't a script that will be run, the first entry in *argv* can be an empty
    361    string.  If this function fails to initialize :data:`sys.argv`, a fatal
    362    condition is signalled using :cfunc:`Py_FatalError`.
    363 
    364    This function also prepends the executed script's path to :data:`sys.path`.
    365    If no script is executed (in the case of calling ``python -c`` or just the
    366    interactive interpreter), the empty string is used instead.
    367 
    368    .. XXX impl. doesn't seem consistent in allowing 0/NULL for the params;
    369       check w/ Guido.
    370 
    371 
    372 .. cfunction:: void Py_SetPythonHome(char *home)
    373 
    374    Set the default "home" directory, that is, the location of the standard
    375    Python libraries.  The libraries are searched in
    376    :file:`{home}/lib/python{version}` and :file:`{home}/lib/python{version}`.
    377    The argument should point to a zero-terminated character string in static
    378    storage whose contents will not change for the duration of the program's
    379    execution.  No code in the Python interpreter will change the contents of
    380    this storage.
    381 
    382 
    383 .. cfunction:: char* Py_GetPythonHome()
    384 
    385    Return the default "home", that is, the value set by a previous call to
    386    :cfunc:`Py_SetPythonHome`, or the value of the :envvar:`PYTHONHOME`
    387    environment variable if it is set.
    388 
    389 
    390 .. _threads:
    391 
    392 Thread State and the Global Interpreter Lock
    393 ============================================
    394 
    395 .. index::
    396    single: global interpreter lock
    397    single: interpreter lock
    398    single: lock, interpreter
    399 
    400 The Python interpreter is not fully thread safe.  In order to support
    401 multi-threaded Python programs, there's a global lock, called the :dfn:`global
    402 interpreter lock` or :dfn:`GIL`, that must be held by the current thread before
    403 it can safely access Python objects. Without the lock, even the simplest
    404 operations could cause problems in a multi-threaded program: for example, when
    405 two threads simultaneously increment the reference count of the same object, the
    406 reference count could end up being incremented only once instead of twice.
    407 
    408 .. index:: single: setcheckinterval() (in module sys)
    409 
    410 Therefore, the rule exists that only the thread that has acquired the global
    411 interpreter lock may operate on Python objects or call Python/C API functions.
    412 In order to support multi-threaded Python programs, the interpreter regularly
    413 releases and reacquires the lock --- by default, every 100 bytecode instructions
    414 (this can be changed with  :func:`sys.setcheckinterval`).  The lock is also
    415 released and reacquired around potentially blocking I/O operations like reading
    416 or writing a file, so that other threads can run while the thread that requests
    417 the I/O is waiting for the I/O operation to complete.
    418 
    419 .. index::
    420    single: PyThreadState
    421    single: PyThreadState
    422 
    423 The Python interpreter needs to keep some bookkeeping information separate per
    424 thread --- for this it uses a data structure called :ctype:`PyThreadState`.
    425 There's one global variable, however: the pointer to the current
    426 :ctype:`PyThreadState` structure.  Before the addition of :dfn:`thread-local
    427 storage` (:dfn:`TLS`) the current thread state had to be manipulated
    428 explicitly.
    429 
    430 This is easy enough in most cases.  Most code manipulating the global
    431 interpreter lock has the following simple structure::
    432 
    433    Save the thread state in a local variable.
    434    Release the global interpreter lock.
    435    ...Do some blocking I/O operation...
    436    Reacquire the global interpreter lock.
    437    Restore the thread state from the local variable.
    438 
    439 This is so common that a pair of macros exists to simplify it::
    440 
    441    Py_BEGIN_ALLOW_THREADS
    442    ...Do some blocking I/O operation...
    443    Py_END_ALLOW_THREADS
    444 
    445 .. index::
    446    single: Py_BEGIN_ALLOW_THREADS
    447    single: Py_END_ALLOW_THREADS
    448 
    449 The :cmacro:`Py_BEGIN_ALLOW_THREADS` macro opens a new block and declares a
    450 hidden local variable; the :cmacro:`Py_END_ALLOW_THREADS` macro closes the
    451 block.  Another advantage of using these two macros is that when Python is
    452 compiled without thread support, they are defined empty, thus saving the thread
    453 state and GIL manipulations.
    454 
    455 When thread support is enabled, the block above expands to the following code::
    456 
    457    PyThreadState *_save;
    458 
    459    _save = PyEval_SaveThread();
    460    ...Do some blocking I/O operation...
    461    PyEval_RestoreThread(_save);
    462 
    463 Using even lower level primitives, we can get roughly the same effect as
    464 follows::
    465 
    466    PyThreadState *_save;
    467 
    468    _save = PyThreadState_Swap(NULL);
    469    PyEval_ReleaseLock();
    470    ...Do some blocking I/O operation...
    471    PyEval_AcquireLock();
    472    PyThreadState_Swap(_save);
    473 
    474 .. index::
    475    single: PyEval_RestoreThread()
    476    single: errno
    477    single: PyEval_SaveThread()
    478    single: PyEval_ReleaseLock()
    479    single: PyEval_AcquireLock()
    480 
    481 There are some subtle differences; in particular, :cfunc:`PyEval_RestoreThread`
    482 saves and restores the value of the  global variable :cdata:`errno`, since the
    483 lock manipulation does not guarantee that :cdata:`errno` is left alone.  Also,
    484 when thread support is disabled, :cfunc:`PyEval_SaveThread` and
    485 :cfunc:`PyEval_RestoreThread` don't manipulate the GIL; in this case,
    486 :cfunc:`PyEval_ReleaseLock` and :cfunc:`PyEval_AcquireLock` are not available.
    487 This is done so that dynamically loaded extensions compiled with thread support
    488 enabled can be loaded by an interpreter that was compiled with disabled thread
    489 support.
    490 
    491 The global interpreter lock is used to protect the pointer to the current thread
    492 state.  When releasing the lock and saving the thread state, the current thread
    493 state pointer must be retrieved before the lock is released (since another
    494 thread could immediately acquire the lock and store its own thread state in the
    495 global variable). Conversely, when acquiring the lock and restoring the thread
    496 state, the lock must be acquired before storing the thread state pointer.
    497 
    498 It is important to note that when threads are created from C, they don't have
    499 the global interpreter lock, nor is there a thread state data structure for
    500 them.  Such threads must bootstrap themselves into existence, by first
    501 creating a thread state data structure, then acquiring the lock, and finally
    502 storing their thread state pointer, before they can start using the Python/C
    503 API.  When they are done, they should reset the thread state pointer, release
    504 the lock, and finally free their thread state data structure.
    505 
    506 Beginning with version 2.3, threads can now take advantage of the
    507 :cfunc:`PyGILState_\*` functions to do all of the above automatically.  The
    508 typical idiom for calling into Python from a C thread is now::
    509 
    510    PyGILState_STATE gstate;
    511    gstate = PyGILState_Ensure();
    512 
    513    /* Perform Python actions here.  */
    514    result = CallSomeFunction();
    515    /* evaluate result */
    516 
    517    /* Release the thread. No Python API allowed beyond this point. */
    518    PyGILState_Release(gstate);
    519 
    520 Note that the :cfunc:`PyGILState_\*` functions assume there is only one global
    521 interpreter (created automatically by :cfunc:`Py_Initialize`).  Python still
    522 supports the creation of additional interpreters (using
    523 :cfunc:`Py_NewInterpreter`), but mixing multiple interpreters and the
    524 :cfunc:`PyGILState_\*` API is unsupported.
    525 
    526 Another important thing to note about threads is their behaviour in the face
    527 of the C :cfunc:`fork` call. On most systems with :cfunc:`fork`, after a
    528 process forks only the thread that issued the fork will exist. That also
    529 means any locks held by other threads will never be released. Python solves
    530 this for :func:`os.fork` by acquiring the locks it uses internally before
    531 the fork, and releasing them afterwards. In addition, it resets any
    532 :ref:`lock-objects` in the child. When extending or embedding Python, there
    533 is no way to inform Python of additional (non-Python) locks that need to be
    534 acquired before or reset after a fork. OS facilities such as
    535 :cfunc:`posix_atfork` would need to be used to accomplish the same thing.
    536 Additionally, when extending or embedding Python, calling :cfunc:`fork`
    537 directly rather than through :func:`os.fork` (and returning to or calling
    538 into Python) may result in a deadlock by one of Python's internal locks
    539 being held by a thread that is defunct after the fork.
    540 :cfunc:`PyOS_AfterFork` tries to reset the necessary locks, but is not
    541 always able to.
    542 
    543 .. ctype:: PyInterpreterState
    544 
    545    This data structure represents the state shared by a number of cooperating
    546    threads.  Threads belonging to the same interpreter share their module
    547    administration and a few other internal items. There are no public members in
    548    this structure.
    549 
    550    Threads belonging to different interpreters initially share nothing, except
    551    process state like available memory, open file descriptors and such.  The global
    552    interpreter lock is also shared by all threads, regardless of to which
    553    interpreter they belong.
    554 
    555 
    556 .. ctype:: PyThreadState
    557 
    558    This data structure represents the state of a single thread.  The only public
    559    data member is :ctype:`PyInterpreterState \*`:attr:`interp`, which points to
    560    this thread's interpreter state.
    561 
    562 
    563 .. cfunction:: void PyEval_InitThreads()
    564 
    565    .. index::
    566       single: PyEval_ReleaseLock()
    567       single: PyEval_ReleaseThread()
    568       single: PyEval_SaveThread()
    569       single: PyEval_RestoreThread()
    570 
    571    Initialize and acquire the global interpreter lock.  It should be called in the
    572    main thread before creating a second thread or engaging in any other thread
    573    operations such as :cfunc:`PyEval_ReleaseLock` or
    574    ``PyEval_ReleaseThread(tstate)``. It is not needed before calling
    575    :cfunc:`PyEval_SaveThread` or :cfunc:`PyEval_RestoreThread`.
    576 
    577    .. index:: single: Py_Initialize()
    578 
    579    This is a no-op when called for a second time.  It is safe to call this function
    580    before calling :cfunc:`Py_Initialize`.
    581 
    582    .. index:: module: thread
    583 
    584    When only the main thread exists, no GIL operations are needed. This is a
    585    common situation (most Python programs do not use threads), and the lock
    586    operations slow the interpreter down a bit. Therefore, the lock is not
    587    created initially.  This situation is equivalent to having acquired the lock:
    588    when there is only a single thread, all object accesses are safe.  Therefore,
    589    when this function initializes the global interpreter lock, it also acquires
    590    it.  Before the Python :mod:`thread` module creates a new thread, knowing
    591    that either it has the lock or the lock hasn't been created yet, it calls
    592    :cfunc:`PyEval_InitThreads`.  When this call returns, it is guaranteed that
    593    the lock has been created and that the calling thread has acquired it.
    594 
    595    It is **not** safe to call this function when it is unknown which thread (if
    596    any) currently has the global interpreter lock.
    597 
    598    This function is not available when thread support is disabled at compile time.
    599 
    600 
    601 .. cfunction:: int PyEval_ThreadsInitialized()
    602 
    603    Returns a non-zero value if :cfunc:`PyEval_InitThreads` has been called.  This
    604    function can be called without holding the GIL, and therefore can be used to
    605    avoid calls to the locking API when running single-threaded.  This function is
    606    not available when thread support is disabled at compile time.
    607 
    608    .. versionadded:: 2.4
    609 
    610 
    611 .. cfunction:: void PyEval_AcquireLock()
    612 
    613    Acquire the global interpreter lock.  The lock must have been created earlier.
    614    If this thread already has the lock, a deadlock ensues.  This function is not
    615    available when thread support is disabled at compile time.
    616 
    617 
    618 .. cfunction:: void PyEval_ReleaseLock()
    619 
    620    Release the global interpreter lock.  The lock must have been created earlier.
    621    This function is not available when thread support is disabled at compile time.
    622 
    623 
    624 .. cfunction:: void PyEval_AcquireThread(PyThreadState *tstate)
    625 
    626    Acquire the global interpreter lock and set the current thread state to
    627    *tstate*, which should not be *NULL*.  The lock must have been created earlier.
    628    If this thread already has the lock, deadlock ensues.  This function is not
    629    available when thread support is disabled at compile time.
    630 
    631 
    632 .. cfunction:: void PyEval_ReleaseThread(PyThreadState *tstate)
    633 
    634    Reset the current thread state to *NULL* and release the global interpreter
    635    lock.  The lock must have been created earlier and must be held by the current
    636    thread.  The *tstate* argument, which must not be *NULL*, is only used to check
    637    that it represents the current thread state --- if it isn't, a fatal error is
    638    reported. This function is not available when thread support is disabled at
    639    compile time.
    640 
    641 
    642 .. cfunction:: PyThreadState* PyEval_SaveThread()
    643 
    644    Release the global interpreter lock (if it has been created and thread
    645    support is enabled) and reset the thread state to *NULL*, returning the
    646    previous thread state (which is not *NULL*).  If the lock has been created,
    647    the current thread must have acquired it.  (This function is available even
    648    when thread support is disabled at compile time.)
    649 
    650 
    651 .. cfunction:: void PyEval_RestoreThread(PyThreadState *tstate)
    652 
    653    Acquire the global interpreter lock (if it has been created and thread
    654    support is enabled) and set the thread state to *tstate*, which must not be
    655    *NULL*.  If the lock has been created, the current thread must not have
    656    acquired it, otherwise deadlock ensues.  (This function is available even
    657    when thread support is disabled at compile time.)
    658 
    659 
    660 .. cfunction:: void PyEval_ReInitThreads()
    661 
    662    This function is called from :cfunc:`PyOS_AfterFork` to ensure that newly
    663    created child processes don't hold locks referring to threads which
    664    are not running in the child process.
    665 
    666 
    667 The following macros are normally used without a trailing semicolon; look for
    668 example usage in the Python source distribution.
    669 
    670 
    671 .. cmacro:: Py_BEGIN_ALLOW_THREADS
    672 
    673    This macro expands to ``{ PyThreadState *_save; _save = PyEval_SaveThread();``.
    674    Note that it contains an opening brace; it must be matched with a following
    675    :cmacro:`Py_END_ALLOW_THREADS` macro.  See above for further discussion of this
    676    macro.  It is a no-op when thread support is disabled at compile time.
    677 
    678 
    679 .. cmacro:: Py_END_ALLOW_THREADS
    680 
    681    This macro expands to ``PyEval_RestoreThread(_save); }``. Note that it contains
    682    a closing brace; it must be matched with an earlier
    683    :cmacro:`Py_BEGIN_ALLOW_THREADS` macro.  See above for further discussion of
    684    this macro.  It is a no-op when thread support is disabled at compile time.
    685 
    686 
    687 .. cmacro:: Py_BLOCK_THREADS
    688 
    689    This macro expands to ``PyEval_RestoreThread(_save);``: it is equivalent to
    690    :cmacro:`Py_END_ALLOW_THREADS` without the closing brace.  It is a no-op when
    691    thread support is disabled at compile time.
    692 
    693 
    694 .. cmacro:: Py_UNBLOCK_THREADS
    695 
    696    This macro expands to ``_save = PyEval_SaveThread();``: it is equivalent to
    697    :cmacro:`Py_BEGIN_ALLOW_THREADS` without the opening brace and variable
    698    declaration.  It is a no-op when thread support is disabled at compile time.
    699 
    700 All of the following functions are only available when thread support is enabled
    701 at compile time, and must be called only when the global interpreter lock has
    702 been created.
    703 
    704 
    705 .. cfunction:: PyInterpreterState* PyInterpreterState_New()
    706 
    707    Create a new interpreter state object.  The global interpreter lock need not
    708    be held, but may be held if it is necessary to serialize calls to this
    709    function.
    710 
    711 
    712 .. cfunction:: void PyInterpreterState_Clear(PyInterpreterState *interp)
    713 
    714    Reset all information in an interpreter state object.  The global interpreter
    715    lock must be held.
    716 
    717 
    718 .. cfunction:: void PyInterpreterState_Delete(PyInterpreterState *interp)
    719 
    720    Destroy an interpreter state object.  The global interpreter lock need not be
    721    held.  The interpreter state must have been reset with a previous call to
    722    :cfunc:`PyInterpreterState_Clear`.
    723 
    724 
    725 .. cfunction:: PyThreadState* PyThreadState_New(PyInterpreterState *interp)
    726 
    727    Create a new thread state object belonging to the given interpreter object.
    728    The global interpreter lock need not be held, but may be held if it is
    729    necessary to serialize calls to this function.
    730 
    731 
    732 .. cfunction:: void PyThreadState_Clear(PyThreadState *tstate)
    733 
    734    Reset all information in a thread state object.  The global interpreter lock
    735    must be held.
    736 
    737 
    738 .. cfunction:: void PyThreadState_Delete(PyThreadState *tstate)
    739 
    740    Destroy a thread state object.  The global interpreter lock need not be held.
    741    The thread state must have been reset with a previous call to
    742    :cfunc:`PyThreadState_Clear`.
    743 
    744 
    745 .. cfunction:: PyThreadState* PyThreadState_Get()
    746 
    747    Return the current thread state.  The global interpreter lock must be held.
    748    When the current thread state is *NULL*, this issues a fatal error (so that
    749    the caller needn't check for *NULL*).
    750 
    751 
    752 .. cfunction:: PyThreadState* PyThreadState_Swap(PyThreadState *tstate)
    753 
    754    Swap the current thread state with the thread state given by the argument
    755    *tstate*, which may be *NULL*.  The global interpreter lock must be held.
    756 
    757 
    758 .. cfunction:: PyObject* PyThreadState_GetDict()
    759 
    760    Return a dictionary in which extensions can store thread-specific state
    761    information.  Each extension should use a unique key to use to store state in
    762    the dictionary.  It is okay to call this function when no current thread state
    763    is available. If this function returns *NULL*, no exception has been raised and
    764    the caller should assume no current thread state is available.
    765 
    766    .. versionchanged:: 2.3
    767       Previously this could only be called when a current thread is active, and *NULL*
    768       meant that an exception was raised.
    769 
    770 
    771 .. cfunction:: int PyThreadState_SetAsyncExc(long id, PyObject *exc)
    772 
    773    Asynchronously raise an exception in a thread. The *id* argument is the thread
    774    id of the target thread; *exc* is the exception object to be raised. This
    775    function does not steal any references to *exc*. To prevent naive misuse, you
    776    must write your own C extension to call this.  Must be called with the GIL held.
    777    Returns the number of thread states modified; this is normally one, but will be
    778    zero if the thread id isn't found.  If *exc* is :const:`NULL`, the pending
    779    exception (if any) for the thread is cleared. This raises no exceptions.
    780 
    781    .. versionadded:: 2.3
    782 
    783 
    784 .. cfunction:: PyGILState_STATE PyGILState_Ensure()
    785 
    786    Ensure that the current thread is ready to call the Python C API regardless
    787    of the current state of Python, or of the global interpreter lock. This may
    788    be called as many times as desired by a thread as long as each call is
    789    matched with a call to :cfunc:`PyGILState_Release`. In general, other
    790    thread-related APIs may be used between :cfunc:`PyGILState_Ensure` and
    791    :cfunc:`PyGILState_Release` calls as long as the thread state is restored to
    792    its previous state before the Release().  For example, normal usage of the
    793    :cmacro:`Py_BEGIN_ALLOW_THREADS` and :cmacro:`Py_END_ALLOW_THREADS` macros is
    794    acceptable.
    795 
    796    The return value is an opaque "handle" to the thread state when
    797    :cfunc:`PyGILState_Ensure` was called, and must be passed to
    798    :cfunc:`PyGILState_Release` to ensure Python is left in the same state. Even
    799    though recursive calls are allowed, these handles *cannot* be shared - each
    800    unique call to :cfunc:`PyGILState_Ensure` must save the handle for its call
    801    to :cfunc:`PyGILState_Release`.
    802 
    803    When the function returns, the current thread will hold the GIL. Failure is a
    804    fatal error.
    805 
    806    .. versionadded:: 2.3
    807 
    808 
    809 .. cfunction:: void PyGILState_Release(PyGILState_STATE)
    810 
    811    Release any resources previously acquired.  After this call, Python's state will
    812    be the same as it was prior to the corresponding :cfunc:`PyGILState_Ensure` call
    813    (but generally this state will be unknown to the caller, hence the use of the
    814    GILState API.)
    815 
    816    Every call to :cfunc:`PyGILState_Ensure` must be matched by a call to
    817    :cfunc:`PyGILState_Release` on the same thread.
    818 
    819    .. versionadded:: 2.3
     879Bugs and caveats
     880----------------
     881
     882Because sub-interpreters (and the main interpreter) are part of the same
     883process, the insulation between them isn't perfect --- for example, using
     884low-level file operations like  :func:`os.close` they can
     885(accidentally or maliciously) affect each other's open files.  Because of the
     886way extensions are shared between (sub-)interpreters, some extensions may not
     887work properly; this is especially likely when the extension makes use of
     888(static) global variables, or when the extension manipulates its module's
     889dictionary after its initialization.  It is possible to insert objects created
     890in one sub-interpreter into a namespace of another sub-interpreter; this should
     891be done with great care to avoid sharing user-defined functions, methods,
     892instances or classes between sub-interpreters, since import operations executed
     893by such objects may affect the wrong (sub-)interpreter's dictionary of loaded
     894modules.
     895
     896Also note that combining this functionality with :c:func:`PyGILState_\*` APIs
     897is delicate, because these APIs assume a bijection between Python thread states
     898and OS-level threads, an assumption broken by the presence of sub-interpreters.
     899It is highly recommended that you don't switch sub-interpreters between a pair
     900of matching :c:func:`PyGILState_Ensure` and :c:func:`PyGILState_Release` calls.
     901Furthermore, extensions (such as :mod:`ctypes`) using these APIs to allow calling
     902of Python code from non-Python created threads will probably be broken when using
     903sub-interpreters.
     904
     905
     906Asynchronous Notifications
     907==========================
     908
     909A mechanism is provided to make asynchronous notifications to the main
     910interpreter thread.  These notifications take the form of a function
     911pointer and a void pointer argument.
     912
     913
     914.. c:function:: int Py_AddPendingCall(int (*func)(void *), void *arg)
     915
     916   .. index:: single: Py_AddPendingCall()
     917
     918   Schedule a function to be called from the main interpreter thread.  On
     919   success, 0 is returned and *func* is queued for being called in the
     920   main thread.  On failure, -1 is returned without setting any exception.
     921
     922   When successfully queued, *func* will be *eventually* called from the
     923   main interpreter thread with the argument *arg*.  It will be called
     924   asynchronously with respect to normally running Python code, but with
     925   both these conditions met:
     926
     927   * on a :term:`bytecode` boundary;
     928   * with the main thread holding the :term:`global interpreter lock`
     929     (*func* can therefore use the full C API).
     930
     931   *func* must return 0 on success, or -1 on failure with an exception
     932   set.  *func* won't be interrupted to perform another asynchronous
     933   notification recursively, but it can still be interrupted to switch
     934   threads if the global interpreter lock is released.
     935
     936   This function doesn't need a current thread state to run, and it doesn't
     937   need the global interpreter lock.
     938
     939   .. warning::
     940      This is a low-level function, only useful for very special cases.
     941      There is no guarantee that *func* will be called as quick as
     942      possible.  If the main thread is busy executing a system call,
     943      *func* won't be called before the system call returns.  This
     944      function is generally **not** suitable for calling Python code from
     945      arbitrary C threads.  Instead, use the :ref:`PyGILState API<gilstate>`.
     946
     947   .. versionadded:: 2.7
    820948
    821949
     
    842970
    843971
    844 .. ctype:: int (*Py_tracefunc)(PyObject *obj, PyFrameObject *frame, int what, PyObject *arg)
    845 
    846    The type of the trace function registered using :cfunc:`PyEval_SetProfile` and
    847    :cfunc:`PyEval_SetTrace`. The first parameter is the object passed to the
     972.. c:type:: int (*Py_tracefunc)(PyObject *obj, PyFrameObject *frame, int what, PyObject *arg)
     973
     974   The type of the trace function registered using :c:func:`PyEval_SetProfile` and
     975   :c:func:`PyEval_SetTrace`. The first parameter is the object passed to the
    848976   registration function as *obj*, *frame* is the frame object to which the event
    849977   pertains, *what* is one of the constants :const:`PyTrace_CALL`,
     
    862990   | :const:`PyTrace_LINE`        | Always *NULL*.                       |
    863991   +------------------------------+--------------------------------------+
    864    | :const:`PyTrace_RETURN`      | Value being returned to the caller.  |
     992   | :const:`PyTrace_RETURN`      | Value being returned to the caller,  |
     993   |                              | or *NULL* if caused by an exception. |
    865994   +------------------------------+--------------------------------------+
    866    | :const:`PyTrace_C_CALL`      | Name of function being called.       |
     995   | :const:`PyTrace_C_CALL`      | Function object being called.        |
    867996   +------------------------------+--------------------------------------+
    868    | :const:`PyTrace_C_EXCEPTION` | Always *NULL*.                       |
     997   | :const:`PyTrace_C_EXCEPTION` | Function object being called.        |
    869998   +------------------------------+--------------------------------------+
    870    | :const:`PyTrace_C_RETURN`    | Always *NULL*.                       |
     999   | :const:`PyTrace_C_RETURN`    | Function object being called.        |
    8711000   +------------------------------+--------------------------------------+
    8721001
    8731002
    874 .. cvar:: int PyTrace_CALL
    875 
    876    The value of the *what* parameter to a :ctype:`Py_tracefunc` function when a new
     1003.. c:var:: int PyTrace_CALL
     1004
     1005   The value of the *what* parameter to a :c:type:`Py_tracefunc` function when a new
    8771006   call to a function or method is being reported, or a new entry into a generator.
    8781007   Note that the creation of the iterator for a generator function is not reported
     
    8811010
    8821011
    883 .. cvar:: int PyTrace_EXCEPTION
    884 
    885    The value of the *what* parameter to a :ctype:`Py_tracefunc` function when an
     1012.. c:var:: int PyTrace_EXCEPTION
     1013
     1014   The value of the *what* parameter to a :c:type:`Py_tracefunc` function when an
    8861015   exception has been raised.  The callback function is called with this value for
    8871016   *what* when after any bytecode is processed after which the exception becomes
     
    8921021
    8931022
    894 .. cvar:: int PyTrace_LINE
     1023.. c:var:: int PyTrace_LINE
    8951024
    8961025   The value passed as the *what* parameter to a trace function (but not a
     
    8981027
    8991028
    900 .. cvar:: int PyTrace_RETURN
    901 
    902    The value for the *what* parameter to :ctype:`Py_tracefunc` functions when a
     1029.. c:var:: int PyTrace_RETURN
     1030
     1031   The value for the *what* parameter to :c:type:`Py_tracefunc` functions when a
    9031032   call is returning without propagating an exception.
    9041033
    9051034
    906 .. cvar:: int PyTrace_C_CALL
    907 
    908    The value for the *what* parameter to :ctype:`Py_tracefunc` functions when a C
     1035.. c:var:: int PyTrace_C_CALL
     1036
     1037   The value for the *what* parameter to :c:type:`Py_tracefunc` functions when a C
    9091038   function is about to be called.
    9101039
    9111040
    912 .. cvar:: int PyTrace_C_EXCEPTION
    913 
    914    The value for the *what* parameter to :ctype:`Py_tracefunc` functions when a C
    915    function has thrown an exception.
    916 
    917 
    918 .. cvar:: int PyTrace_C_RETURN
    919 
    920    The value for the *what* parameter to :ctype:`Py_tracefunc` functions when a C
     1041.. c:var:: int PyTrace_C_EXCEPTION
     1042
     1043   The value for the *what* parameter to :c:type:`Py_tracefunc` functions when a C
     1044   function has raised an exception.
     1045
     1046
     1047.. c:var:: int PyTrace_C_RETURN
     1048
     1049   The value for the *what* parameter to :c:type:`Py_tracefunc` functions when a C
    9211050   function has returned.
    9221051
    9231052
    924 .. cfunction:: void PyEval_SetProfile(Py_tracefunc func, PyObject *obj)
     1053.. c:function:: void PyEval_SetProfile(Py_tracefunc func, PyObject *obj)
    9251054
    9261055   Set the profiler function to *func*.  The *obj* parameter is passed to the
     
    9321061
    9331062
    934 .. cfunction:: void PyEval_SetTrace(Py_tracefunc func, PyObject *obj)
     1063.. c:function:: void PyEval_SetTrace(Py_tracefunc func, PyObject *obj)
    9351064
    9361065   Set the tracing function to *func*.  This is similar to
    937    :cfunc:`PyEval_SetProfile`, except the tracing function does receive line-number
     1066   :c:func:`PyEval_SetProfile`, except the tracing function does receive line-number
    9381067   events.
    9391068
    940 .. cfunction:: PyObject* PyEval_GetCallStats(PyObject *self)
     1069.. c:function:: PyObject* PyEval_GetCallStats(PyObject *self)
    9411070
    9421071   Return a tuple of function call counts.  There are constants defined for the
     
    9901119
    9911120
    992 .. cfunction:: PyInterpreterState* PyInterpreterState_Head()
     1121.. c:function:: PyInterpreterState* PyInterpreterState_Head()
    9931122
    9941123   Return the interpreter state object at the head of the list of all such objects.
     
    9971126
    9981127
    999 .. cfunction:: PyInterpreterState* PyInterpreterState_Next(PyInterpreterState *interp)
     1128.. c:function:: PyInterpreterState* PyInterpreterState_Next(PyInterpreterState *interp)
    10001129
    10011130   Return the next interpreter state object after *interp* from the list of all
     
    10051134
    10061135
    1007 .. cfunction:: PyThreadState * PyInterpreterState_ThreadHead(PyInterpreterState *interp)
    1008 
    1009    Return the a pointer to the first :ctype:`PyThreadState` object in the list of
     1136.. c:function:: PyThreadState * PyInterpreterState_ThreadHead(PyInterpreterState *interp)
     1137
     1138   Return the a pointer to the first :c:type:`PyThreadState` object in the list of
    10101139   threads associated with the interpreter *interp*.
    10111140
     
    10131142
    10141143
    1015 .. cfunction:: PyThreadState* PyThreadState_Next(PyThreadState *tstate)
     1144.. c:function:: PyThreadState* PyThreadState_Next(PyThreadState *tstate)
    10161145
    10171146   Return the next thread state object after *tstate* from the list of all such
    1018    objects belonging to the same :ctype:`PyInterpreterState` object.
     1147   objects belonging to the same :c:type:`PyInterpreterState` object.
    10191148
    10201149   .. versionadded:: 2.2
Note: See TracChangeset for help on using the changeset viewer.