~ubuntu-branches/ubuntu/maverick/python3.1/maverick

« back to all changes in this revision

Viewing changes to Doc/c-api/init.rst

  • Committer: Bazaar Package Importer
  • Author(s): Matthias Klose
  • Date: 2009-03-23 00:01:27 UTC
  • Revision ID: james.westby@ubuntu.com-20090323000127-5fstfxju4ufrhthq
Tags: upstream-3.1~a1+20090322
ImportĀ upstreamĀ versionĀ 3.1~a1+20090322

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
.. highlightlang:: c
 
2
 
 
3
 
 
4
.. _initialization:
 
5
 
 
6
*****************************************
 
7
Initialization, Finalization, and Threads
 
8
*****************************************
 
9
 
 
10
 
 
11
.. cfunction:: void Py_Initialize()
 
12
 
 
13
   .. index::
 
14
      single: Py_SetProgramName()
 
15
      single: PyEval_InitThreads()
 
16
      single: PyEval_ReleaseLock()
 
17
      single: PyEval_AcquireLock()
 
18
      single: modules (in module sys)
 
19
      single: path (in module sys)
 
20
      module: builtins
 
21
      module: __main__
 
22
      module: sys
 
23
      triple: module; search; path
 
24
      single: PySys_SetArgv()
 
25
      single: Py_Finalize()
 
26
 
 
27
   Initialize the Python interpreter.  In an application embedding  Python, this
 
28
   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
 
31
   the table of loaded modules (``sys.modules``), and creates the fundamental
 
32
   modules :mod:`builtins`, :mod:`__main__` and :mod:`sys`.  It also initializes
 
33
   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
 
36
   fatal error if the initialization fails.
 
37
 
 
38
 
 
39
.. cfunction:: void Py_InitializeEx(int initsigs)
 
40
 
 
41
   This function works like :cfunc:`Py_Initialize` if *initsigs* is 1. If
 
42
   *initsigs* is 0, it skips initialization registration of signal handlers, which
 
43
   might be useful when Python is embedded.
 
44
 
 
45
 
 
46
.. cfunction:: int Py_IsInitialized()
 
47
 
 
48
   Return true (nonzero) when the Python interpreter has been initialized, false
 
49
   (zero) if not.  After :cfunc:`Py_Finalize` is called, this returns false until
 
50
   :cfunc:`Py_Initialize` is called again.
 
51
 
 
52
 
 
53
.. cfunction:: void Py_Finalize()
 
54
 
 
55
   Undo all initializations made by :cfunc:`Py_Initialize` and subsequent use of
 
56
   Python/C API functions, and destroy all sub-interpreters (see
 
57
   :cfunc:`Py_NewInterpreter` below) that were created and not yet destroyed since
 
58
   the last call to :cfunc:`Py_Initialize`.  Ideally, this frees all memory
 
59
   allocated by the Python interpreter.  This is a no-op when called for a second
 
60
   time (without calling :cfunc:`Py_Initialize` again first).  There is no return
 
61
   value; errors during finalization are ignored.
 
62
 
 
63
   This function is provided for a number of reasons.  An embedding application
 
64
   might want to restart Python without having to restart the application itself.
 
65
   An application that has loaded the Python interpreter from a dynamically
 
66
   loadable library (or DLL) might want to free all memory allocated by Python
 
67
   before unloading the DLL. During a hunt for memory leaks in an application a
 
68
   developer might want to free all memory allocated by Python before exiting from
 
69
   the application.
 
70
 
 
71
   **Bugs and caveats:** The destruction of modules and objects in modules is done
 
72
   in random order; this may cause destructors (:meth:`__del__` methods) to fail
 
73
   when they depend on other objects (even functions) or modules.  Dynamically
 
74
   loaded extension modules loaded by Python are not unloaded.  Small amounts of
 
75
   memory allocated by the Python interpreter may not be freed (if you find a leak,
 
76
   please report it).  Memory tied up in circular references between objects is not
 
77
   freed.  Some memory allocated by extension modules may not be freed.  Some
 
78
   extensions may not work properly if their initialization routine is called more
 
79
   than once; this can happen if an application calls :cfunc:`Py_Initialize` and
 
80
   :cfunc:`Py_Finalize` more than once.
 
81
 
 
82
 
 
83
.. cfunction:: PyThreadState* Py_NewInterpreter()
 
84
 
 
85
   .. index::
 
86
      module: builtins
 
87
      module: __main__
 
88
      module: sys
 
89
      single: stdout (in module sys)
 
90
      single: stderr (in module sys)
 
91
      single: stdin (in module sys)
 
92
 
 
93
   Create a new sub-interpreter.  This is an (almost) totally separate environment
 
94
   for the execution of Python code.  In particular, the new interpreter has
 
95
   separate, independent versions of all imported modules, including the
 
96
   fundamental modules :mod:`builtins`, :mod:`__main__` and :mod:`sys`.  The
 
97
   table of loaded modules (``sys.modules``) and the module search path
 
98
   (``sys.path``) are also separate.  The new environment has no ``sys.argv``
 
99
   variable.  It has new standard I/O stream file objects ``sys.stdin``,
 
100
   ``sys.stdout`` and ``sys.stderr`` (however these refer to the same underlying
 
101
   :ctype:`FILE` structures in the C library).
 
102
 
 
103
   The return value points to the first thread state created in the new
 
104
   sub-interpreter.  This thread state is made in the current thread state.
 
105
   Note that no actual thread is created; see the discussion of thread states
 
106
   below.  If creation of the new interpreter is unsuccessful, *NULL* is
 
107
   returned; no exception is set since the exception state is stored in the
 
108
   current thread state and there may not be a current thread state.  (Like all
 
109
   other Python/C API functions, the global interpreter lock must be held before
 
110
   calling this function and is still held when it returns; however, unlike most
 
111
   other Python/C API functions, there needn't be a current thread state on
 
112
   entry.)
 
113
 
 
114
   .. index::
 
115
      single: Py_Finalize()
 
116
      single: Py_Initialize()
 
117
 
 
118
   Extension modules are shared between (sub-)interpreters as follows: the first
 
119
   time a particular extension is imported, it is initialized normally, and a
 
120
   (shallow) copy of its module's dictionary is squirreled away.  When the same
 
121
   extension is imported by another (sub-)interpreter, a new module is initialized
 
122
   and filled with the contents of this copy; the extension's ``init`` function is
 
123
   not called.  Note that this is different from what happens when an extension is
 
124
   imported after the interpreter has been completely re-initialized by calling
 
125
   :cfunc:`Py_Finalize` and :cfunc:`Py_Initialize`; in that case, the extension's
 
126
   ``initmodule`` function *is* called again.
 
127
 
 
128
   .. index:: single: close() (in module os)
 
129
 
 
130
   **Bugs and caveats:** Because sub-interpreters (and the main interpreter) are
 
131
   part of the same process, the insulation between them isn't perfect --- for
 
132
   example, using low-level file operations like  :func:`os.close` they can
 
133
   (accidentally or maliciously) affect each other's open files.  Because of the
 
134
   way extensions are shared between (sub-)interpreters, some extensions may not
 
135
   work properly; this is especially likely when the extension makes use of
 
136
   (static) global variables, or when the extension manipulates its module's
 
137
   dictionary after its initialization.  It is possible to insert objects created
 
138
   in one sub-interpreter into a namespace of another sub-interpreter; this should
 
139
   be done with great care to avoid sharing user-defined functions, methods,
 
140
   instances or classes between sub-interpreters, since import operations executed
 
141
   by such objects may affect the wrong (sub-)interpreter's dictionary of loaded
 
142
   modules.  (XXX This is a hard-to-fix bug that will be addressed in a future
 
143
   release.)
 
144
 
 
145
   Also note that the use of this functionality is incompatible with extension
 
146
   modules such as PyObjC and ctypes that use the :cfunc:`PyGILState_\*` APIs (and
 
147
   this is inherent in the way the :cfunc:`PyGILState_\*` functions work).  Simple
 
148
   things may work, but confusing behavior will always be near.
 
149
 
 
150
 
 
151
.. cfunction:: void Py_EndInterpreter(PyThreadState *tstate)
 
152
 
 
153
   .. index:: single: Py_Finalize()
 
154
 
 
155
   Destroy the (sub-)interpreter represented by the given thread state. The given
 
156
   thread state must be the current thread state.  See the discussion of thread
 
157
   states below.  When the call returns, the current thread state is *NULL*.  All
 
158
   thread states associated with this interpreter are destroyed.  (The global
 
159
   interpreter lock must be held before calling this function and is still held
 
160
   when it returns.)  :cfunc:`Py_Finalize` will destroy all sub-interpreters that
 
161
   haven't been explicitly destroyed at that point.
 
162
 
 
163
 
 
164
.. cfunction:: void Py_SetProgramName(wchar_t *name)
 
165
 
 
166
   .. index::
 
167
      single: Py_Initialize()
 
168
      single: main()
 
169
      single: Py_GetPath()
 
170
 
 
171
   This function should be called before :cfunc:`Py_Initialize` is called for
 
172
   the first time, if it is called at all.  It tells the interpreter the value
 
173
   of the ``argv[0]`` argument to the :cfunc:`main` function of the program
 
174
   (converted to wide characters).
 
175
   This is used by :cfunc:`Py_GetPath` and some other functions below to find
 
176
   the Python run-time libraries relative to the interpreter executable.  The
 
177
   default value is ``'python'``.  The argument should point to a
 
178
   zero-terminated wide character string in static storage whose contents will not
 
179
   change for the duration of the program's execution.  No code in the Python
 
180
   interpreter will change the contents of this storage.
 
181
 
 
182
 
 
183
.. cfunction:: wchar* Py_GetProgramName()
 
184
 
 
185
   .. index:: single: Py_SetProgramName()
 
186
 
 
187
   Return the program name set with :cfunc:`Py_SetProgramName`, or the default.
 
188
   The returned string points into static storage; the caller should not modify its
 
189
   value.
 
190
 
 
191
 
 
192
.. cfunction:: wchar_t* Py_GetPrefix()
 
193
 
 
194
   Return the *prefix* for installed platform-independent files. This is derived
 
195
   through a number of complicated rules from the program name set with
 
196
   :cfunc:`Py_SetProgramName` and some environment variables; for example, if the
 
197
   program name is ``'/usr/local/bin/python'``, the prefix is ``'/usr/local'``. The
 
198
   returned string points into static storage; the caller should not modify its
 
199
   value.  This corresponds to the :makevar:`prefix` variable in the top-level
 
200
   :file:`Makefile` and the :option:`--prefix` argument to the :program:`configure`
 
201
   script at build time.  The value is available to Python code as ``sys.prefix``.
 
202
   It is only useful on Unix.  See also the next function.
 
203
 
 
204
 
 
205
.. cfunction:: wchar_t* Py_GetExecPrefix()
 
206
 
 
207
   Return the *exec-prefix* for installed platform-*dependent* files.  This is
 
208
   derived through a number of complicated rules from the program name set with
 
209
   :cfunc:`Py_SetProgramName` and some environment variables; for example, if the
 
210
   program name is ``'/usr/local/bin/python'``, the exec-prefix is
 
211
   ``'/usr/local'``.  The returned string points into static storage; the caller
 
212
   should not modify its value.  This corresponds to the :makevar:`exec_prefix`
 
213
   variable in the top-level :file:`Makefile` and the :option:`--exec-prefix`
 
214
   argument to the :program:`configure` script at build  time.  The value is
 
215
   available to Python code as ``sys.exec_prefix``.  It is only useful on Unix.
 
216
 
 
217
   Background: The exec-prefix differs from the prefix when platform dependent
 
218
   files (such as executables and shared libraries) are installed in a different
 
219
   directory tree.  In a typical installation, platform dependent files may be
 
220
   installed in the :file:`/usr/local/plat` subtree while platform independent may
 
221
   be installed in :file:`/usr/local`.
 
222
 
 
223
   Generally speaking, a platform is a combination of hardware and software
 
224
   families, e.g.  Sparc machines running the Solaris 2.x operating system are
 
225
   considered the same platform, but Intel machines running Solaris 2.x are another
 
226
   platform, and Intel machines running Linux are yet another platform.  Different
 
227
   major revisions of the same operating system generally also form different
 
228
   platforms.  Non-Unix operating systems are a different story; the installation
 
229
   strategies on those systems are so different that the prefix and exec-prefix are
 
230
   meaningless, and set to the empty string. Note that compiled Python bytecode
 
231
   files are platform independent (but not independent from the Python version by
 
232
   which they were compiled!).
 
233
 
 
234
   System administrators will know how to configure the :program:`mount` or
 
235
   :program:`automount` programs to share :file:`/usr/local` between platforms
 
236
   while having :file:`/usr/local/plat` be a different filesystem for each
 
237
   platform.
 
238
 
 
239
 
 
240
.. cfunction:: wchar_t* Py_GetProgramFullPath()
 
241
 
 
242
   .. index::
 
243
      single: Py_SetProgramName()
 
244
      single: executable (in module sys)
 
245
 
 
246
   Return the full program name of the Python executable; this is  computed as a
 
247
   side-effect of deriving the default module search path  from the program name
 
248
   (set by :cfunc:`Py_SetProgramName` above). The returned string points into
 
249
   static storage; the caller should not modify its value.  The value is available
 
250
   to Python code as ``sys.executable``.
 
251
 
 
252
 
 
253
.. cfunction:: wchar_t* Py_GetPath()
 
254
 
 
255
   .. index::
 
256
      triple: module; search; path
 
257
      single: path (in module sys)
 
258
 
 
259
   Return the default module search path; this is computed from the  program name
 
260
   (set by :cfunc:`Py_SetProgramName` above) and some environment variables.  The
 
261
   returned string consists of a series of directory names separated by a platform
 
262
   dependent delimiter character.  The delimiter character is ``':'`` on Unix and
 
263
   Mac OS X, ``';'`` on Windows.  The returned string points into static storage;
 
264
   the caller should not modify its value.  The value is available to Python code
 
265
   as the list ``sys.path``, which may be modified to change the future search path
 
266
   for loaded modules.
 
267
 
 
268
   .. XXX should give the exact rules
 
269
 
 
270
 
 
271
.. cfunction:: const char* Py_GetVersion()
 
272
 
 
273
   Return the version of this Python interpreter.  This is a string that looks
 
274
   something like ::
 
275
 
 
276
      "3.0a5+ (py3k:63103M, May 12 2008, 00:53:55) \n[GCC 4.2.3]"
 
277
 
 
278
   .. index:: single: version (in module sys)
 
279
 
 
280
   The first word (up to the first space character) is the current Python version;
 
281
   the first three characters are the major and minor version separated by a
 
282
   period.  The returned string points into static storage; the caller should not
 
283
   modify its value.  The value is available to Python code as :data:`sys.version`.
 
284
 
 
285
 
 
286
.. cfunction:: const char* Py_GetBuildNumber()
 
287
 
 
288
   Return a string representing the Subversion revision that this Python executable
 
289
   was built from.  This number is a string because it may contain a trailing 'M'
 
290
   if Python was built from a mixed revision source tree.
 
291
 
 
292
 
 
293
.. cfunction:: const char* Py_GetPlatform()
 
294
 
 
295
   .. index:: single: platform (in module sys)
 
296
 
 
297
   Return the platform identifier for the current platform.  On Unix, this is
 
298
   formed from the "official" name of the operating system, converted to lower
 
299
   case, followed by the major revision number; e.g., for Solaris 2.x, which is
 
300
   also known as SunOS 5.x, the value is ``'sunos5'``.  On Mac OS X, it is
 
301
   ``'darwin'``.  On Windows, it is ``'win'``.  The returned string points into
 
302
   static storage; the caller should not modify its value.  The value is available
 
303
   to Python code as ``sys.platform``.
 
304
 
 
305
 
 
306
.. cfunction:: const char* Py_GetCopyright()
 
307
 
 
308
   Return the official copyright string for the current Python version, for example
 
309
 
 
310
   ``'Copyright 1991-1995 Stichting Mathematisch Centrum, Amsterdam'``
 
311
 
 
312
   .. index:: single: copyright (in module sys)
 
313
 
 
314
   The returned string points into static storage; the caller should not modify its
 
315
   value.  The value is available to Python code as ``sys.copyright``.
 
316
 
 
317
 
 
318
.. cfunction:: const char* Py_GetCompiler()
 
319
 
 
320
   Return an indication of the compiler used to build the current Python version,
 
321
   in square brackets, for example::
 
322
 
 
323
      "[GCC 2.7.2.2]"
 
324
 
 
325
   .. index:: single: version (in module sys)
 
326
 
 
327
   The returned string points into static storage; the caller should not modify its
 
328
   value.  The value is available to Python code as part of the variable
 
329
   ``sys.version``.
 
330
 
 
331
 
 
332
.. cfunction:: const char* Py_GetBuildInfo()
 
333
 
 
334
   Return information about the sequence number and build date and time  of the
 
335
   current Python interpreter instance, for example ::
 
336
 
 
337
      "#67, Aug  1 1997, 22:34:28"
 
338
 
 
339
   .. index:: single: version (in module sys)
 
340
 
 
341
   The returned string points into static storage; the caller should not modify its
 
342
   value.  The value is available to Python code as part of the variable
 
343
   ``sys.version``.
 
344
 
 
345
 
 
346
.. cfunction:: void PySys_SetArgv(int argc, wchar_t **argv)
 
347
 
 
348
   .. index::
 
349
      single: main()
 
350
      single: Py_FatalError()
 
351
      single: argv (in module sys)
 
352
 
 
353
   Set :data:`sys.argv` based on *argc* and *argv*.  These parameters are
 
354
   similar to those passed to the program's :cfunc:`main` function with the
 
355
   difference that the first entry should refer to the script file to be
 
356
   executed rather than the executable hosting the Python interpreter.  If there
 
357
   isn't a script that will be run, the first entry in *argv* can be an empty
 
358
   string.  If this function fails to initialize :data:`sys.argv`, a fatal
 
359
   condition is signalled using :cfunc:`Py_FatalError`.
 
360
 
 
361
   This function also prepends the executed script's path to :data:`sys.path`.
 
362
   If no script is executed (in the case of calling ``python -c`` or just the
 
363
   interactive interpreter), the empty string is used instead.
 
364
 
 
365
   .. XXX impl. doesn't seem consistent in allowing 0/NULL for the params;
 
366
      check w/ Guido.
 
367
 
 
368
 
 
369
.. cfunction:: void Py_SetPythonHome(char *home)
 
370
 
 
371
   Set the default "home" directory, that is, the location of the standard
 
372
   Python libraries.  The libraries are searched in
 
373
   :file:`{home}/lib/python{version}` and :file:`{home}/lib/python{version}`.
 
374
 
 
375
 
 
376
.. cfunction:: char* Py_GetPythonHome()
 
377
 
 
378
   Return the default "home", that is, the value set by a previous call to
 
379
   :cfunc:`Py_SetPythonHome`, or the value of the :envvar:`PYTHONHOME`
 
380
   environment variable if it is set.
 
381
 
 
382
 
 
383
.. _threads:
 
384
 
 
385
Thread State and the Global Interpreter Lock
 
386
============================================
 
387
 
 
388
.. index::
 
389
   single: global interpreter lock
 
390
   single: interpreter lock
 
391
   single: lock, interpreter
 
392
 
 
393
The Python interpreter is not fully thread safe.  In order to support
 
394
multi-threaded Python programs, there's a global lock that must be held by the
 
395
current thread before it can safely access Python objects. Without the lock,
 
396
even the simplest operations could cause problems in a multi-threaded program:
 
397
for example, when two threads simultaneously increment the reference count of
 
398
the same object, the reference count could end up being incremented only once
 
399
instead of twice.
 
400
 
 
401
.. index:: single: setcheckinterval() (in module sys)
 
402
 
 
403
Therefore, the rule exists that only the thread that has acquired the global
 
404
interpreter lock may operate on Python objects or call Python/C API functions.
 
405
In order to support multi-threaded Python programs, the interpreter regularly
 
406
releases and reacquires the lock --- by default, every 100 bytecode instructions
 
407
(this can be changed with  :func:`sys.setcheckinterval`).  The lock is also
 
408
released and reacquired around potentially blocking I/O operations like reading
 
409
or writing a file, so that other threads can run while the thread that requests
 
410
the I/O is waiting for the I/O operation to complete.
 
411
 
 
412
.. index::
 
413
   single: PyThreadState
 
414
   single: PyThreadState
 
415
 
 
416
The Python interpreter needs to keep some bookkeeping information separate per
 
417
thread --- for this it uses a data structure called :ctype:`PyThreadState`.
 
418
There's one global variable, however: the pointer to the current
 
419
:ctype:`PyThreadState` structure.  While most thread packages have a way to
 
420
store "per-thread global data," Python's internal platform independent thread
 
421
abstraction doesn't support this yet.  Therefore, the current thread state must
 
422
be manipulated explicitly.
 
423
 
 
424
This is easy enough in most cases.  Most code manipulating the global
 
425
interpreter lock has the following simple structure::
 
426
 
 
427
   Save the thread state in a local variable.
 
428
   Release the interpreter lock.
 
429
   ...Do some blocking I/O operation...
 
430
   Reacquire the interpreter lock.
 
431
   Restore the thread state from the local variable.
 
432
 
 
433
This is so common that a pair of macros exists to simplify it::
 
434
 
 
435
   Py_BEGIN_ALLOW_THREADS
 
436
   ...Do some blocking I/O operation...
 
437
   Py_END_ALLOW_THREADS
 
438
 
 
439
.. index::
 
440
   single: Py_BEGIN_ALLOW_THREADS
 
441
   single: Py_END_ALLOW_THREADS
 
442
 
 
443
The :cmacro:`Py_BEGIN_ALLOW_THREADS` macro opens a new block and declares a
 
444
hidden local variable; the :cmacro:`Py_END_ALLOW_THREADS` macro closes the
 
445
block.  Another advantage of using these two macros is that when Python is
 
446
compiled without thread support, they are defined empty, thus saving the thread
 
447
state and lock manipulations.
 
448
 
 
449
When thread support is enabled, the block above expands to the following code::
 
450
 
 
451
   PyThreadState *_save;
 
452
 
 
453
   _save = PyEval_SaveThread();
 
454
   ...Do some blocking I/O operation...
 
455
   PyEval_RestoreThread(_save);
 
456
 
 
457
Using even lower level primitives, we can get roughly the same effect as
 
458
follows::
 
459
 
 
460
   PyThreadState *_save;
 
461
 
 
462
   _save = PyThreadState_Swap(NULL);
 
463
   PyEval_ReleaseLock();
 
464
   ...Do some blocking I/O operation...
 
465
   PyEval_AcquireLock();
 
466
   PyThreadState_Swap(_save);
 
467
 
 
468
.. index::
 
469
   single: PyEval_RestoreThread()
 
470
   single: errno
 
471
   single: PyEval_SaveThread()
 
472
   single: PyEval_ReleaseLock()
 
473
   single: PyEval_AcquireLock()
 
474
 
 
475
There are some subtle differences; in particular, :cfunc:`PyEval_RestoreThread`
 
476
saves and restores the value of the  global variable :cdata:`errno`, since the
 
477
lock manipulation does not guarantee that :cdata:`errno` is left alone.  Also,
 
478
when thread support is disabled, :cfunc:`PyEval_SaveThread` and
 
479
:cfunc:`PyEval_RestoreThread` don't manipulate the lock; in this case,
 
480
:cfunc:`PyEval_ReleaseLock` and :cfunc:`PyEval_AcquireLock` are not available.
 
481
This is done so that dynamically loaded extensions compiled with thread support
 
482
enabled can be loaded by an interpreter that was compiled with disabled thread
 
483
support.
 
484
 
 
485
The global interpreter lock is used to protect the pointer to the current thread
 
486
state.  When releasing the lock and saving the thread state, the current thread
 
487
state pointer must be retrieved before the lock is released (since another
 
488
thread could immediately acquire the lock and store its own thread state in the
 
489
global variable). Conversely, when acquiring the lock and restoring the thread
 
490
state, the lock must be acquired before storing the thread state pointer.
 
491
 
 
492
Why am I going on with so much detail about this?  Because when threads are
 
493
created from C, they don't have the global interpreter lock, nor is there a
 
494
thread state data structure for them.  Such threads must bootstrap themselves
 
495
into existence, by first creating a thread state data structure, then acquiring
 
496
the lock, and finally storing their thread state pointer, before they can start
 
497
using the Python/C API.  When they are done, they should reset the thread state
 
498
pointer, release the lock, and finally free their thread state data structure.
 
499
 
 
500
Threads can take advantage of the :cfunc:`PyGILState_\*` functions to do all of
 
501
the above automatically.  The typical idiom for calling into Python from a C
 
502
thread is now::
 
503
 
 
504
   PyGILState_STATE gstate;
 
505
   gstate = PyGILState_Ensure();
 
506
 
 
507
   /* Perform Python actions here.  */
 
508
   result = CallSomeFunction();
 
509
   /* evaluate result */
 
510
 
 
511
   /* Release the thread. No Python API allowed beyond this point. */
 
512
   PyGILState_Release(gstate);
 
513
 
 
514
Note that the :cfunc:`PyGILState_\*` functions assume there is only one global
 
515
interpreter (created automatically by :cfunc:`Py_Initialize`).  Python still
 
516
supports the creation of additional interpreters (using
 
517
:cfunc:`Py_NewInterpreter`), but mixing multiple interpreters and the
 
518
:cfunc:`PyGILState_\*` API is unsupported.
 
519
 
 
520
 
 
521
.. ctype:: PyInterpreterState
 
522
 
 
523
   This data structure represents the state shared by a number of cooperating
 
524
   threads.  Threads belonging to the same interpreter share their module
 
525
   administration and a few other internal items. There are no public members in
 
526
   this structure.
 
527
 
 
528
   Threads belonging to different interpreters initially share nothing, except
 
529
   process state like available memory, open file descriptors and such.  The global
 
530
   interpreter lock is also shared by all threads, regardless of to which
 
531
   interpreter they belong.
 
532
 
 
533
 
 
534
.. ctype:: PyThreadState
 
535
 
 
536
   This data structure represents the state of a single thread.  The only public
 
537
   data member is :ctype:`PyInterpreterState \*`:attr:`interp`, which points to
 
538
   this thread's interpreter state.
 
539
 
 
540
 
 
541
.. cfunction:: void PyEval_InitThreads()
 
542
 
 
543
   .. index::
 
544
      single: PyEval_ReleaseLock()
 
545
      single: PyEval_ReleaseThread()
 
546
      single: PyEval_SaveThread()
 
547
      single: PyEval_RestoreThread()
 
548
 
 
549
   Initialize and acquire the global interpreter lock.  It should be called in the
 
550
   main thread before creating a second thread or engaging in any other thread
 
551
   operations such as :cfunc:`PyEval_ReleaseLock` or
 
552
   ``PyEval_ReleaseThread(tstate)``. It is not needed before calling
 
553
   :cfunc:`PyEval_SaveThread` or :cfunc:`PyEval_RestoreThread`.
 
554
 
 
555
   .. index:: single: Py_Initialize()
 
556
 
 
557
   This is a no-op when called for a second time.  It is safe to call this function
 
558
   before calling :cfunc:`Py_Initialize`.
 
559
 
 
560
   .. index:: module: _thread
 
561
 
 
562
   When only the main thread exists, no lock operations are needed. This is a
 
563
   common situation (most Python programs do not use threads), and the lock
 
564
   operations slow the interpreter down a bit. Therefore, the lock is not created
 
565
   initially.  This situation is equivalent to having acquired the lock:  when
 
566
   there is only a single thread, all object accesses are safe.  Therefore, when
 
567
   this function initializes the lock, it also acquires it.  Before the Python
 
568
   :mod:`_thread` module creates a new thread, knowing that either it has the lock
 
569
   or the lock hasn't been created yet, it calls :cfunc:`PyEval_InitThreads`.  When
 
570
   this call returns, it is guaranteed that the lock has been created and that the
 
571
   calling thread has acquired it.
 
572
 
 
573
   It is **not** safe to call this function when it is unknown which thread (if
 
574
   any) currently has the global interpreter lock.
 
575
 
 
576
   This function is not available when thread support is disabled at compile time.
 
577
 
 
578
 
 
579
.. cfunction:: int PyEval_ThreadsInitialized()
 
580
 
 
581
   Returns a non-zero value if :cfunc:`PyEval_InitThreads` has been called.  This
 
582
   function can be called without holding the lock, and therefore can be used to
 
583
   avoid calls to the locking API when running single-threaded.  This function is
 
584
   not available when thread support is disabled at compile time.
 
585
 
 
586
 
 
587
.. cfunction:: void PyEval_AcquireLock()
 
588
 
 
589
   Acquire the global interpreter lock.  The lock must have been created earlier.
 
590
   If this thread already has the lock, a deadlock ensues.  This function is not
 
591
   available when thread support is disabled at compile time.
 
592
 
 
593
 
 
594
.. cfunction:: void PyEval_ReleaseLock()
 
595
 
 
596
   Release the global interpreter lock.  The lock must have been created earlier.
 
597
   This function is not available when thread support is disabled at compile time.
 
598
 
 
599
 
 
600
.. cfunction:: void PyEval_AcquireThread(PyThreadState *tstate)
 
601
 
 
602
   Acquire the global interpreter lock and set the current thread state to
 
603
   *tstate*, which should not be *NULL*.  The lock must have been created earlier.
 
604
   If this thread already has the lock, deadlock ensues.  This function is not
 
605
   available when thread support is disabled at compile time.
 
606
 
 
607
 
 
608
.. cfunction:: void PyEval_ReleaseThread(PyThreadState *tstate)
 
609
 
 
610
   Reset the current thread state to *NULL* and release the global interpreter
 
611
   lock.  The lock must have been created earlier and must be held by the current
 
612
   thread.  The *tstate* argument, which must not be *NULL*, is only used to check
 
613
   that it represents the current thread state --- if it isn't, a fatal error is
 
614
   reported. This function is not available when thread support is disabled at
 
615
   compile time.
 
616
 
 
617
 
 
618
.. cfunction:: PyThreadState* PyEval_SaveThread()
 
619
 
 
620
   Release the interpreter lock (if it has been created and thread support is
 
621
   enabled) and reset the thread state to *NULL*, returning the previous thread
 
622
   state (which is not *NULL*).  If the lock has been created, the current thread
 
623
   must have acquired it.  (This function is available even when thread support is
 
624
   disabled at compile time.)
 
625
 
 
626
 
 
627
.. cfunction:: void PyEval_RestoreThread(PyThreadState *tstate)
 
628
 
 
629
   Acquire the interpreter lock (if it has been created and thread support is
 
630
   enabled) and set the thread state to *tstate*, which must not be *NULL*.  If the
 
631
   lock has been created, the current thread must not have acquired it, otherwise
 
632
   deadlock ensues.  (This function is available even when thread support is
 
633
   disabled at compile time.)
 
634
 
 
635
 
 
636
.. cfunction:: void PyEval_ReInitThreads()
 
637
 
 
638
   This function is called from :cfunc:`PyOS_AfterFork` to ensure that newly
 
639
   created child processes don't hold locks referring to threads which
 
640
   are not running in the child process.
 
641
 
 
642
 
 
643
The following macros are normally used without a trailing semicolon; look for
 
644
example usage in the Python source distribution.
 
645
 
 
646
 
 
647
.. cmacro:: Py_BEGIN_ALLOW_THREADS
 
648
 
 
649
   This macro expands to ``{ PyThreadState *_save; _save = PyEval_SaveThread();``.
 
650
   Note that it contains an opening brace; it must be matched with a following
 
651
   :cmacro:`Py_END_ALLOW_THREADS` macro.  See above for further discussion of this
 
652
   macro.  It is a no-op when thread support is disabled at compile time.
 
653
 
 
654
 
 
655
.. cmacro:: Py_END_ALLOW_THREADS
 
656
 
 
657
   This macro expands to ``PyEval_RestoreThread(_save); }``. Note that it contains
 
658
   a closing brace; it must be matched with an earlier
 
659
   :cmacro:`Py_BEGIN_ALLOW_THREADS` macro.  See above for further discussion of
 
660
   this macro.  It is a no-op when thread support is disabled at compile time.
 
661
 
 
662
 
 
663
.. cmacro:: Py_BLOCK_THREADS
 
664
 
 
665
   This macro expands to ``PyEval_RestoreThread(_save);``: it is equivalent to
 
666
   :cmacro:`Py_END_ALLOW_THREADS` without the closing brace.  It is a no-op when
 
667
   thread support is disabled at compile time.
 
668
 
 
669
 
 
670
.. cmacro:: Py_UNBLOCK_THREADS
 
671
 
 
672
   This macro expands to ``_save = PyEval_SaveThread();``: it is equivalent to
 
673
   :cmacro:`Py_BEGIN_ALLOW_THREADS` without the opening brace and variable
 
674
   declaration.  It is a no-op when thread support is disabled at compile time.
 
675
 
 
676
All of the following functions are only available when thread support is enabled
 
677
at compile time, and must be called only when the interpreter lock has been
 
678
created.
 
679
 
 
680
 
 
681
.. cfunction:: PyInterpreterState* PyInterpreterState_New()
 
682
 
 
683
   Create a new interpreter state object.  The interpreter lock need not be held,
 
684
   but may be held if it is necessary to serialize calls to this function.
 
685
 
 
686
 
 
687
.. cfunction:: void PyInterpreterState_Clear(PyInterpreterState *interp)
 
688
 
 
689
   Reset all information in an interpreter state object.  The interpreter lock must
 
690
   be held.
 
691
 
 
692
 
 
693
.. cfunction:: void PyInterpreterState_Delete(PyInterpreterState *interp)
 
694
 
 
695
   Destroy an interpreter state object.  The interpreter lock need not be held.
 
696
   The interpreter state must have been reset with a previous call to
 
697
   :cfunc:`PyInterpreterState_Clear`.
 
698
 
 
699
 
 
700
.. cfunction:: PyThreadState* PyThreadState_New(PyInterpreterState *interp)
 
701
 
 
702
   Create a new thread state object belonging to the given interpreter object.  The
 
703
   interpreter lock need not be held, but may be held if it is necessary to
 
704
   serialize calls to this function.
 
705
 
 
706
 
 
707
.. cfunction:: void PyThreadState_Clear(PyThreadState *tstate)
 
708
 
 
709
   Reset all information in a thread state object.  The interpreter lock must be
 
710
   held.
 
711
 
 
712
 
 
713
.. cfunction:: void PyThreadState_Delete(PyThreadState *tstate)
 
714
 
 
715
   Destroy a thread state object.  The interpreter lock need not be held.  The
 
716
   thread state must have been reset with a previous call to
 
717
   :cfunc:`PyThreadState_Clear`.
 
718
 
 
719
 
 
720
.. cfunction:: PyThreadState* PyThreadState_Get()
 
721
 
 
722
   Return the current thread state.  The interpreter lock must be held.  When the
 
723
   current thread state is *NULL*, this issues a fatal error (so that the caller
 
724
   needn't check for *NULL*).
 
725
 
 
726
 
 
727
.. cfunction:: PyThreadState* PyThreadState_Swap(PyThreadState *tstate)
 
728
 
 
729
   Swap the current thread state with the thread state given by the argument
 
730
   *tstate*, which may be *NULL*.  The interpreter lock must be held.
 
731
 
 
732
 
 
733
.. cfunction:: PyObject* PyThreadState_GetDict()
 
734
 
 
735
   Return a dictionary in which extensions can store thread-specific state
 
736
   information.  Each extension should use a unique key to use to store state in
 
737
   the dictionary.  It is okay to call this function when no current thread state
 
738
   is available. If this function returns *NULL*, no exception has been raised and
 
739
   the caller should assume no current thread state is available.
 
740
 
 
741
 
 
742
.. cfunction:: int PyThreadState_SetAsyncExc(long id, PyObject *exc)
 
743
 
 
744
   Asynchronously raise an exception in a thread. The *id* argument is the thread
 
745
   id of the target thread; *exc* is the exception object to be raised. This
 
746
   function does not steal any references to *exc*. To prevent naive misuse, you
 
747
   must write your own C extension to call this.  Must be called with the GIL held.
 
748
   Returns the number of thread states modified; this is normally one, but will be
 
749
   zero if the thread id isn't found.  If *exc* is :const:`NULL`, the pending
 
750
   exception (if any) for the thread is cleared. This raises no exceptions.
 
751
 
 
752
 
 
753
.. cfunction:: PyGILState_STATE PyGILState_Ensure()
 
754
 
 
755
   Ensure that the current thread is ready to call the Python C API regardless of
 
756
   the current state of Python, or of its thread lock. This may be called as many
 
757
   times as desired by a thread as long as each call is matched with a call to
 
758
   :cfunc:`PyGILState_Release`. In general, other thread-related APIs may be used
 
759
   between :cfunc:`PyGILState_Ensure` and :cfunc:`PyGILState_Release` calls as long
 
760
   as the thread state is restored to its previous state before the Release().  For
 
761
   example, normal usage of the :cmacro:`Py_BEGIN_ALLOW_THREADS` and
 
762
   :cmacro:`Py_END_ALLOW_THREADS` macros is acceptable.
 
763
 
 
764
   The return value is an opaque "handle" to the thread state when
 
765
   :cfunc:`PyGILState_Ensure` was called, and must be passed to
 
766
   :cfunc:`PyGILState_Release` to ensure Python is left in the same state. Even
 
767
   though recursive calls are allowed, these handles *cannot* be shared - each
 
768
   unique call to :cfunc:`PyGILState_Ensure` must save the handle for its call
 
769
   to :cfunc:`PyGILState_Release`.
 
770
 
 
771
   When the function returns, the current thread will hold the GIL. Failure is a
 
772
   fatal error.
 
773
 
 
774
 
 
775
.. cfunction:: void PyGILState_Release(PyGILState_STATE)
 
776
 
 
777
   Release any resources previously acquired.  After this call, Python's state will
 
778
   be the same as it was prior to the corresponding :cfunc:`PyGILState_Ensure` call
 
779
   (but generally this state will be unknown to the caller, hence the use of the
 
780
   GILState API.)
 
781
 
 
782
   Every call to :cfunc:`PyGILState_Ensure` must be matched by a call to
 
783
   :cfunc:`PyGILState_Release` on the same thread.
 
784
 
 
785
 
 
786
 
 
787
Asynchronous Notifications
 
788
==========================
 
789
 
 
790
A mechanism is provided to make asynchronous notifications to the the main
 
791
interpreter thread.  These notifications take the form of a function
 
792
pointer and a void argument.
 
793
 
 
794
.. index:: single: setcheckinterval() (in module sys)
 
795
 
 
796
Every check interval, when the interpreter lock is released and reacquired,
 
797
python will also call any such provided functions.  This can be used for
 
798
example by asynchronous IO handlers.  The notification can be scheduled
 
799
from a worker thread and the actual call than made at the earliest
 
800
convenience by the main thread where it has possession of the global
 
801
interpreter lock and can perform any Python API calls.
 
802
 
 
803
.. cfunction:: void Py_AddPendingCall( int (*func)(void *, void *arg) )
 
804
 
 
805
   .. index:: single: Py_AddPendingCall()
 
806
 
 
807
   Post a notification to the Python main thread.  If successful,
 
808
   *func* will be called with the argument *arg* at the earliest
 
809
   convenience.  *func* will be called having the global interpreter
 
810
   lock held and can thus use the full Python API and can take any
 
811
   action such as setting object attributes to signal IO completion.
 
812
   It must return 0 on success, or -1 signalling an exception.
 
813
   The notification function won't be interrupted to perform another
 
814
   asynchronous notification recursively,
 
815
   but it can still be interrupted to switch threads if the interpreter
 
816
   lock is released, for example, if it calls back into python code.
 
817
 
 
818
   This function returns 0 on success in which case the notification has been
 
819
   scheduled.  Otherwise, for example if the notification buffer is full,
 
820
   it returns -1 without setting any exception.
 
821
 
 
822
   This function can be called on any thread, be it a Python thread or
 
823
   some other system thread.  If it is a Python thread, it doesn't matter if
 
824
   it holds the global interpreter lock or not.
 
825
 
 
826
   .. versionadded:: 2.7
 
827
 
 
828
 
 
829
 
 
830
.. _profiling:
 
831
 
 
832
Profiling and Tracing
 
833
=====================
 
834
 
 
835
.. sectionauthor:: Fred L. Drake, Jr. <fdrake@acm.org>
 
836
 
 
837
 
 
838
The Python interpreter provides some low-level support for attaching profiling
 
839
and execution tracing facilities.  These are used for profiling, debugging, and
 
840
coverage analysis tools.
 
841
 
 
842
This C interface allows the profiling or tracing code to avoid the overhead of
 
843
calling through Python-level callable objects, making a direct C function call
 
844
instead.  The essential attributes of the facility have not changed; the
 
845
interface allows trace functions to be installed per-thread, and the basic
 
846
events reported to the trace function are the same as had been reported to the
 
847
Python-level trace functions in previous versions.
 
848
 
 
849
 
 
850
.. ctype:: int (*Py_tracefunc)(PyObject *obj, PyFrameObject *frame, int what, PyObject *arg)
 
851
 
 
852
   The type of the trace function registered using :cfunc:`PyEval_SetProfile` and
 
853
   :cfunc:`PyEval_SetTrace`. The first parameter is the object passed to the
 
854
   registration function as *obj*, *frame* is the frame object to which the event
 
855
   pertains, *what* is one of the constants :const:`PyTrace_CALL`,
 
856
   :const:`PyTrace_EXCEPTION`, :const:`PyTrace_LINE`, :const:`PyTrace_RETURN`,
 
857
   :const:`PyTrace_C_CALL`, :const:`PyTrace_C_EXCEPTION`, or
 
858
   :const:`PyTrace_C_RETURN`, and *arg* depends on the value of *what*:
 
859
 
 
860
   +------------------------------+--------------------------------------+
 
861
   | Value of *what*              | Meaning of *arg*                     |
 
862
   +==============================+======================================+
 
863
   | :const:`PyTrace_CALL`        | Always *NULL*.                       |
 
864
   +------------------------------+--------------------------------------+
 
865
   | :const:`PyTrace_EXCEPTION`   | Exception information as returned by |
 
866
   |                              | :func:`sys.exc_info`.                |
 
867
   +------------------------------+--------------------------------------+
 
868
   | :const:`PyTrace_LINE`        | Always *NULL*.                       |
 
869
   +------------------------------+--------------------------------------+
 
870
   | :const:`PyTrace_RETURN`      | Value being returned to the caller.  |
 
871
   +------------------------------+--------------------------------------+
 
872
   | :const:`PyTrace_C_CALL`      | Name of function being called.       |
 
873
   +------------------------------+--------------------------------------+
 
874
   | :const:`PyTrace_C_EXCEPTION` | Always *NULL*.                       |
 
875
   +------------------------------+--------------------------------------+
 
876
   | :const:`PyTrace_C_RETURN`    | Always *NULL*.                       |
 
877
   +------------------------------+--------------------------------------+
 
878
 
 
879
 
 
880
.. cvar:: int PyTrace_CALL
 
881
 
 
882
   The value of the *what* parameter to a :ctype:`Py_tracefunc` function when a new
 
883
   call to a function or method is being reported, or a new entry into a generator.
 
884
   Note that the creation of the iterator for a generator function is not reported
 
885
   as there is no control transfer to the Python bytecode in the corresponding
 
886
   frame.
 
887
 
 
888
 
 
889
.. cvar:: int PyTrace_EXCEPTION
 
890
 
 
891
   The value of the *what* parameter to a :ctype:`Py_tracefunc` function when an
 
892
   exception has been raised.  The callback function is called with this value for
 
893
   *what* when after any bytecode is processed after which the exception becomes
 
894
   set within the frame being executed.  The effect of this is that as exception
 
895
   propagation causes the Python stack to unwind, the callback is called upon
 
896
   return to each frame as the exception propagates.  Only trace functions receives
 
897
   these events; they are not needed by the profiler.
 
898
 
 
899
 
 
900
.. cvar:: int PyTrace_LINE
 
901
 
 
902
   The value passed as the *what* parameter to a trace function (but not a
 
903
   profiling function) when a line-number event is being reported.
 
904
 
 
905
 
 
906
.. cvar:: int PyTrace_RETURN
 
907
 
 
908
   The value for the *what* parameter to :ctype:`Py_tracefunc` functions when a
 
909
   call is returning without propagating an exception.
 
910
 
 
911
 
 
912
.. cvar:: int PyTrace_C_CALL
 
913
 
 
914
   The value for the *what* parameter to :ctype:`Py_tracefunc` functions when a C
 
915
   function is about to be called.
 
916
 
 
917
 
 
918
.. cvar:: int PyTrace_C_EXCEPTION
 
919
 
 
920
   The value for the *what* parameter to :ctype:`Py_tracefunc` functions when a C
 
921
   function has thrown an exception.
 
922
 
 
923
 
 
924
.. cvar:: int PyTrace_C_RETURN
 
925
 
 
926
   The value for the *what* parameter to :ctype:`Py_tracefunc` functions when a C
 
927
   function has returned.
 
928
 
 
929
 
 
930
.. cfunction:: void PyEval_SetProfile(Py_tracefunc func, PyObject *obj)
 
931
 
 
932
   Set the profiler function to *func*.  The *obj* parameter is passed to the
 
933
   function as its first parameter, and may be any Python object, or *NULL*.  If
 
934
   the profile function needs to maintain state, using a different value for *obj*
 
935
   for each thread provides a convenient and thread-safe place to store it.  The
 
936
   profile function is called for all monitored events except the line-number
 
937
   events.
 
938
 
 
939
 
 
940
.. cfunction:: void PyEval_SetTrace(Py_tracefunc func, PyObject *obj)
 
941
 
 
942
   Set the tracing function to *func*.  This is similar to
 
943
   :cfunc:`PyEval_SetProfile`, except the tracing function does receive line-number
 
944
   events.
 
945
 
 
946
.. cfunction:: PyObject* PyEval_GetCallStats(PyObject *self)
 
947
 
 
948
   Return a tuple of function call counts.  There are constants defined for the
 
949
   positions within the tuple:
 
950
 
 
951
   +-------------------------------+-------+
 
952
   | Name                          | Value |
 
953
   +===============================+=======+
 
954
   | :const:`PCALL_ALL`            | 0     |
 
955
   +-------------------------------+-------+
 
956
   | :const:`PCALL_FUNCTION`       | 1     |
 
957
   +-------------------------------+-------+
 
958
   | :const:`PCALL_FAST_FUNCTION`  | 2     |
 
959
   +-------------------------------+-------+
 
960
   | :const:`PCALL_FASTER_FUNCTION`| 3     |
 
961
   +-------------------------------+-------+
 
962
   | :const:`PCALL_METHOD`         | 4     |
 
963
   +-------------------------------+-------+
 
964
   | :const:`PCALL_BOUND_METHOD`   | 5     |
 
965
   +-------------------------------+-------+
 
966
   | :const:`PCALL_CFUNCTION`      | 6     |
 
967
   +-------------------------------+-------+
 
968
   | :const:`PCALL_TYPE`           | 7     |
 
969
   +-------------------------------+-------+
 
970
   | :const:`PCALL_GENERATOR`      | 8     |
 
971
   +-------------------------------+-------+
 
972
   | :const:`PCALL_OTHER`          | 9     |
 
973
   +-------------------------------+-------+
 
974
   | :const:`PCALL_POP`            | 10    |
 
975
   +-------------------------------+-------+
 
976
 
 
977
   :const:`PCALL_FAST_FUNCTION` means no argument tuple needs to be created.
 
978
   :const:`PCALL_FASTER_FUNCTION` means that the fast-path frame setup code is used.
 
979
 
 
980
   If there is a method call where the call can be optimized by changing
 
981
   the argument tuple and calling the function directly, it gets recorded
 
982
   twice.
 
983
 
 
984
   This function is only present if Python is compiled with :const:`CALL_PROFILE`
 
985
   defined.
 
986
 
 
987
.. _advanced-debugging:
 
988
 
 
989
Advanced Debugger Support
 
990
=========================
 
991
 
 
992
.. sectionauthor:: Fred L. Drake, Jr. <fdrake@acm.org>
 
993
 
 
994
 
 
995
These functions are only intended to be used by advanced debugging tools.
 
996
 
 
997
 
 
998
.. cfunction:: PyInterpreterState* PyInterpreterState_Head()
 
999
 
 
1000
   Return the interpreter state object at the head of the list of all such objects.
 
1001
 
 
1002
 
 
1003
.. cfunction:: PyInterpreterState* PyInterpreterState_Next(PyInterpreterState *interp)
 
1004
 
 
1005
   Return the next interpreter state object after *interp* from the list of all
 
1006
   such objects.
 
1007
 
 
1008
 
 
1009
.. cfunction:: PyThreadState * PyInterpreterState_ThreadHead(PyInterpreterState *interp)
 
1010
 
 
1011
   Return the a pointer to the first :ctype:`PyThreadState` object in the list of
 
1012
   threads associated with the interpreter *interp*.
 
1013
 
 
1014
 
 
1015
.. cfunction:: PyThreadState* PyThreadState_Next(PyThreadState *tstate)
 
1016
 
 
1017
   Return the next thread state object after *tstate* from the list of all such
 
1018
   objects belonging to the same :ctype:`PyInterpreterState` object.
 
1019