blob: e78ddae70854b409a69e070dc9179fa0e3912c88 [file] [log] [blame]
Georg Brandl116aa622007-08-15 14:28:22 +00001.. highlightlang:: c
2
3
4.. _initialization:
5
6*****************************************
7Initialization, Finalization, and Threads
8*****************************************
9
10
Antoine Pitrou8b50b832011-01-15 11:57:42 +000011Initializing and finalizing the interpreter
12===========================================
13
14
Georg Brandl60203b42010-10-06 10:11:56 +000015.. c:function:: void Py_Initialize()
Georg Brandl116aa622007-08-15 14:28:22 +000016
17 .. index::
18 single: Py_SetProgramName()
19 single: PyEval_InitThreads()
Georg Brandl116aa622007-08-15 14:28:22 +000020 single: modules (in module sys)
21 single: path (in module sys)
Georg Brandl1a3284e2007-12-02 09:40:06 +000022 module: builtins
Georg Brandl116aa622007-08-15 14:28:22 +000023 module: __main__
24 module: sys
25 triple: module; search; path
26 single: PySys_SetArgv()
Antoine Pitrouf978fac2010-05-21 17:25:34 +000027 single: PySys_SetArgvEx()
Georg Brandl116aa622007-08-15 14:28:22 +000028 single: Py_Finalize()
29
30 Initialize the Python interpreter. In an application embedding Python, this
31 should be called before using any other Python/C API functions; with the
Sandro Tosi645a0dd2012-01-07 18:34:07 +010032 exception of :c:func:`Py_SetProgramName`, :c:func:`Py_SetPythonHome` and :c:func:`Py_SetPath`. This initializes
Georg Brandl116aa622007-08-15 14:28:22 +000033 the table of loaded modules (``sys.modules``), and creates the fundamental
Georg Brandl1a3284e2007-12-02 09:40:06 +000034 modules :mod:`builtins`, :mod:`__main__` and :mod:`sys`. It also initializes
Georg Brandl116aa622007-08-15 14:28:22 +000035 the module search path (``sys.path``). It does not set ``sys.argv``; use
Georg Brandl60203b42010-10-06 10:11:56 +000036 :c:func:`PySys_SetArgvEx` for that. This is a no-op when called for a second time
37 (without calling :c:func:`Py_Finalize` first). There is no return value; it is a
Georg Brandl116aa622007-08-15 14:28:22 +000038 fatal error if the initialization fails.
39
Steve Dowerde02b082016-09-09 11:46:37 -070040 .. note::
41 On Windows, changes the console mode from ``O_TEXT`` to ``O_BINARY``, which will
42 also affect non-Python uses of the console using the C Runtime.
43
Georg Brandl116aa622007-08-15 14:28:22 +000044
Georg Brandl60203b42010-10-06 10:11:56 +000045.. c:function:: void Py_InitializeEx(int initsigs)
Georg Brandl116aa622007-08-15 14:28:22 +000046
Georg Brandl60203b42010-10-06 10:11:56 +000047 This function works like :c:func:`Py_Initialize` if *initsigs* is 1. If
Georg Brandl116aa622007-08-15 14:28:22 +000048 *initsigs* is 0, it skips initialization registration of signal handlers, which
49 might be useful when Python is embedded.
50
Georg Brandl116aa622007-08-15 14:28:22 +000051
Georg Brandl60203b42010-10-06 10:11:56 +000052.. c:function:: int Py_IsInitialized()
Georg Brandl116aa622007-08-15 14:28:22 +000053
54 Return true (nonzero) when the Python interpreter has been initialized, false
Georg Brandl60203b42010-10-06 10:11:56 +000055 (zero) if not. After :c:func:`Py_Finalize` is called, this returns false until
56 :c:func:`Py_Initialize` is called again.
Georg Brandl116aa622007-08-15 14:28:22 +000057
58
Georg Brandl60203b42010-10-06 10:11:56 +000059.. c:function:: void Py_Finalize()
Georg Brandl116aa622007-08-15 14:28:22 +000060
Georg Brandl60203b42010-10-06 10:11:56 +000061 Undo all initializations made by :c:func:`Py_Initialize` and subsequent use of
Georg Brandl116aa622007-08-15 14:28:22 +000062 Python/C API functions, and destroy all sub-interpreters (see
Georg Brandl60203b42010-10-06 10:11:56 +000063 :c:func:`Py_NewInterpreter` below) that were created and not yet destroyed since
64 the last call to :c:func:`Py_Initialize`. Ideally, this frees all memory
Georg Brandl116aa622007-08-15 14:28:22 +000065 allocated by the Python interpreter. This is a no-op when called for a second
Georg Brandl60203b42010-10-06 10:11:56 +000066 time (without calling :c:func:`Py_Initialize` again first). There is no return
Georg Brandl116aa622007-08-15 14:28:22 +000067 value; errors during finalization are ignored.
68
69 This function is provided for a number of reasons. An embedding application
70 might want to restart Python without having to restart the application itself.
71 An application that has loaded the Python interpreter from a dynamically
72 loadable library (or DLL) might want to free all memory allocated by Python
73 before unloading the DLL. During a hunt for memory leaks in an application a
74 developer might want to free all memory allocated by Python before exiting from
75 the application.
76
77 **Bugs and caveats:** The destruction of modules and objects in modules is done
78 in random order; this may cause destructors (:meth:`__del__` methods) to fail
79 when they depend on other objects (even functions) or modules. Dynamically
80 loaded extension modules loaded by Python are not unloaded. Small amounts of
81 memory allocated by the Python interpreter may not be freed (if you find a leak,
82 please report it). Memory tied up in circular references between objects is not
83 freed. Some memory allocated by extension modules may not be freed. Some
84 extensions may not work properly if their initialization routine is called more
Georg Brandl60203b42010-10-06 10:11:56 +000085 than once; this can happen if an application calls :c:func:`Py_Initialize` and
86 :c:func:`Py_Finalize` more than once.
Georg Brandl116aa622007-08-15 14:28:22 +000087
88
Antoine Pitrou8b50b832011-01-15 11:57:42 +000089Process-wide parameters
90=======================
Georg Brandl116aa622007-08-15 14:28:22 +000091
92
Serhiy Storchaka03863d22015-06-21 17:11:21 +030093.. c:function:: int Py_SetStandardStreamEncoding(const char *encoding, const char *errors)
Nick Coghlan7d270ee2013-10-17 22:35:35 +100094
95 .. index::
96 single: Py_Initialize()
97 single: main()
98 triple: stdin; stdout; sdterr
99
Nick Coghlan1805a622013-10-18 23:11:47 +1000100 This function should be called before :c:func:`Py_Initialize`, if it is
101 called at all. It specifies which encoding and error handling to use
102 with standard IO, with the same meanings as in :func:`str.encode`.
Nick Coghlan7d270ee2013-10-17 22:35:35 +1000103
104 It overrides :envvar:`PYTHONIOENCODING` values, and allows embedding code
Nick Coghlan1805a622013-10-18 23:11:47 +1000105 to control IO encoding when the environment variable does not work.
Nick Coghlan7d270ee2013-10-17 22:35:35 +1000106
107 ``encoding`` and/or ``errors`` may be NULL to use
108 :envvar:`PYTHONIOENCODING` and/or default values (depending on other
109 settings).
110
111 Note that :data:`sys.stderr` always uses the "backslashreplace" error
112 handler, regardless of this (or any other) setting.
113
114 If :c:func:`Py_Finalize` is called, this function will need to be called
115 again in order to affect subsequent calls to :c:func:`Py_Initialize`.
116
Nick Coghlan1805a622013-10-18 23:11:47 +1000117 Returns 0 if successful, a nonzero value on error (e.g. calling after the
118 interpreter has already been initialized).
119
120 .. versionadded:: 3.4
Nick Coghlan7d270ee2013-10-17 22:35:35 +1000121
122
Georg Brandl60203b42010-10-06 10:11:56 +0000123.. c:function:: void Py_SetProgramName(wchar_t *name)
Georg Brandl116aa622007-08-15 14:28:22 +0000124
125 .. index::
126 single: Py_Initialize()
127 single: main()
128 single: Py_GetPath()
129
Georg Brandl60203b42010-10-06 10:11:56 +0000130 This function should be called before :c:func:`Py_Initialize` is called for
Georg Brandl116aa622007-08-15 14:28:22 +0000131 the first time, if it is called at all. It tells the interpreter the value
Georg Brandl60203b42010-10-06 10:11:56 +0000132 of the ``argv[0]`` argument to the :c:func:`main` function of the program
Martin v. Löwis790465f2008-04-05 20:41:37 +0000133 (converted to wide characters).
Georg Brandl60203b42010-10-06 10:11:56 +0000134 This is used by :c:func:`Py_GetPath` and some other functions below to find
Georg Brandl116aa622007-08-15 14:28:22 +0000135 the Python run-time libraries relative to the interpreter executable. The
136 default value is ``'python'``. The argument should point to a
Martin v. Löwis790465f2008-04-05 20:41:37 +0000137 zero-terminated wide character string in static storage whose contents will not
Georg Brandl116aa622007-08-15 14:28:22 +0000138 change for the duration of the program's execution. No code in the Python
139 interpreter will change the contents of this storage.
140
Victor Stinner25e014b2014-08-01 12:28:49 +0200141 Use :c:func:`Py_DecodeLocale` to decode a bytes string to get a
142 :c:type:`wchar_*` string.
143
Georg Brandl116aa622007-08-15 14:28:22 +0000144
Georg Brandl60203b42010-10-06 10:11:56 +0000145.. c:function:: wchar* Py_GetProgramName()
Georg Brandl116aa622007-08-15 14:28:22 +0000146
147 .. index:: single: Py_SetProgramName()
148
Georg Brandl60203b42010-10-06 10:11:56 +0000149 Return the program name set with :c:func:`Py_SetProgramName`, or the default.
Georg Brandl116aa622007-08-15 14:28:22 +0000150 The returned string points into static storage; the caller should not modify its
151 value.
152
153
Georg Brandl60203b42010-10-06 10:11:56 +0000154.. c:function:: wchar_t* Py_GetPrefix()
Georg Brandl116aa622007-08-15 14:28:22 +0000155
156 Return the *prefix* for installed platform-independent files. This is derived
157 through a number of complicated rules from the program name set with
Georg Brandl60203b42010-10-06 10:11:56 +0000158 :c:func:`Py_SetProgramName` and some environment variables; for example, if the
Georg Brandl116aa622007-08-15 14:28:22 +0000159 program name is ``'/usr/local/bin/python'``, the prefix is ``'/usr/local'``. The
160 returned string points into static storage; the caller should not modify its
161 value. This corresponds to the :makevar:`prefix` variable in the top-level
Éric Araujo37b5f9e2011-09-01 03:19:30 +0200162 :file:`Makefile` and the ``--prefix`` argument to the :program:`configure`
Georg Brandl116aa622007-08-15 14:28:22 +0000163 script at build time. The value is available to Python code as ``sys.prefix``.
164 It is only useful on Unix. See also the next function.
165
166
Georg Brandl60203b42010-10-06 10:11:56 +0000167.. c:function:: wchar_t* Py_GetExecPrefix()
Georg Brandl116aa622007-08-15 14:28:22 +0000168
169 Return the *exec-prefix* for installed platform-*dependent* files. This is
170 derived through a number of complicated rules from the program name set with
Georg Brandl60203b42010-10-06 10:11:56 +0000171 :c:func:`Py_SetProgramName` and some environment variables; for example, if the
Georg Brandl116aa622007-08-15 14:28:22 +0000172 program name is ``'/usr/local/bin/python'``, the exec-prefix is
173 ``'/usr/local'``. The returned string points into static storage; the caller
174 should not modify its value. This corresponds to the :makevar:`exec_prefix`
Éric Araujo37b5f9e2011-09-01 03:19:30 +0200175 variable in the top-level :file:`Makefile` and the ``--exec-prefix``
Georg Brandl116aa622007-08-15 14:28:22 +0000176 argument to the :program:`configure` script at build time. The value is
177 available to Python code as ``sys.exec_prefix``. It is only useful on Unix.
178
179 Background: The exec-prefix differs from the prefix when platform dependent
180 files (such as executables and shared libraries) are installed in a different
181 directory tree. In a typical installation, platform dependent files may be
182 installed in the :file:`/usr/local/plat` subtree while platform independent may
183 be installed in :file:`/usr/local`.
184
185 Generally speaking, a platform is a combination of hardware and software
186 families, e.g. Sparc machines running the Solaris 2.x operating system are
187 considered the same platform, but Intel machines running Solaris 2.x are another
188 platform, and Intel machines running Linux are yet another platform. Different
189 major revisions of the same operating system generally also form different
190 platforms. Non-Unix operating systems are a different story; the installation
191 strategies on those systems are so different that the prefix and exec-prefix are
192 meaningless, and set to the empty string. Note that compiled Python bytecode
193 files are platform independent (but not independent from the Python version by
194 which they were compiled!).
195
196 System administrators will know how to configure the :program:`mount` or
197 :program:`automount` programs to share :file:`/usr/local` between platforms
198 while having :file:`/usr/local/plat` be a different filesystem for each
199 platform.
200
201
Georg Brandl60203b42010-10-06 10:11:56 +0000202.. c:function:: wchar_t* Py_GetProgramFullPath()
Georg Brandl116aa622007-08-15 14:28:22 +0000203
204 .. index::
205 single: Py_SetProgramName()
206 single: executable (in module sys)
207
208 Return the full program name of the Python executable; this is computed as a
209 side-effect of deriving the default module search path from the program name
Georg Brandl60203b42010-10-06 10:11:56 +0000210 (set by :c:func:`Py_SetProgramName` above). The returned string points into
Georg Brandl116aa622007-08-15 14:28:22 +0000211 static storage; the caller should not modify its value. The value is available
212 to Python code as ``sys.executable``.
213
214
Georg Brandl60203b42010-10-06 10:11:56 +0000215.. c:function:: wchar_t* Py_GetPath()
Georg Brandl116aa622007-08-15 14:28:22 +0000216
217 .. index::
218 triple: module; search; path
219 single: path (in module sys)
Kristján Valur Jónsson3b69db22010-09-27 05:32:54 +0000220 single: Py_SetPath()
Georg Brandl116aa622007-08-15 14:28:22 +0000221
Benjamin Peterson46a99002010-01-09 18:45:30 +0000222 Return the default module search path; this is computed from the program name
Georg Brandl60203b42010-10-06 10:11:56 +0000223 (set by :c:func:`Py_SetProgramName` above) and some environment variables.
Benjamin Peterson46a99002010-01-09 18:45:30 +0000224 The returned string consists of a series of directory names separated by a
225 platform dependent delimiter character. The delimiter character is ``':'``
226 on Unix and Mac OS X, ``';'`` on Windows. The returned string points into
227 static storage; the caller should not modify its value. The list
228 :data:`sys.path` is initialized with this value on interpreter startup; it
229 can be (and usually is) modified later to change the search path for loading
230 modules.
Georg Brandl116aa622007-08-15 14:28:22 +0000231
Christian Heimes5b5e81c2007-12-31 16:14:33 +0000232 .. XXX should give the exact rules
Georg Brandl116aa622007-08-15 14:28:22 +0000233
234
Georg Brandl60203b42010-10-06 10:11:56 +0000235.. c:function:: void Py_SetPath(const wchar_t *)
Kristján Valur Jónsson3b69db22010-09-27 05:32:54 +0000236
237 .. index::
238 triple: module; search; path
239 single: path (in module sys)
240 single: Py_GetPath()
241
242 Set the default module search path. If this function is called before
Georg Brandlfa4f7f92010-10-06 10:14:08 +0000243 :c:func:`Py_Initialize`, then :c:func:`Py_GetPath` won't attempt to compute a
244 default search path but uses the one provided instead. This is useful if
245 Python is embedded by an application that has full knowledge of the location
Georg Brandle8ea3552014-10-11 14:36:02 +0200246 of all modules. The path components should be separated by the platform
247 dependent delimiter character, which is ``':'`` on Unix and Mac OS X, ``';'``
248 on Windows.
Kristján Valur Jónsson3b69db22010-09-27 05:32:54 +0000249
Georg Brandlfa4f7f92010-10-06 10:14:08 +0000250 This also causes :data:`sys.executable` to be set only to the raw program
251 name (see :c:func:`Py_SetProgramName`) and for :data:`sys.prefix` and
252 :data:`sys.exec_prefix` to be empty. It is up to the caller to modify these
253 if required after calling :c:func:`Py_Initialize`.
254
Victor Stinner25e014b2014-08-01 12:28:49 +0200255 Use :c:func:`Py_DecodeLocale` to decode a bytes string to get a
256 :c:type:`wchar_*` string.
257
Benjamin Petersonb33bb892014-12-24 10:49:11 -0600258 The path argument is copied internally, so the caller may free it after the
259 call completes.
260
Kristján Valur Jónsson3b69db22010-09-27 05:32:54 +0000261
Georg Brandl60203b42010-10-06 10:11:56 +0000262.. c:function:: const char* Py_GetVersion()
Georg Brandl116aa622007-08-15 14:28:22 +0000263
264 Return the version of this Python interpreter. This is a string that looks
265 something like ::
266
Georg Brandle6bcc912008-05-12 18:05:20 +0000267 "3.0a5+ (py3k:63103M, May 12 2008, 00:53:55) \n[GCC 4.2.3]"
Georg Brandl116aa622007-08-15 14:28:22 +0000268
269 .. index:: single: version (in module sys)
270
271 The first word (up to the first space character) is the current Python version;
272 the first three characters are the major and minor version separated by a
273 period. The returned string points into static storage; the caller should not
Georg Brandle6bcc912008-05-12 18:05:20 +0000274 modify its value. The value is available to Python code as :data:`sys.version`.
Georg Brandl116aa622007-08-15 14:28:22 +0000275
276
Georg Brandl60203b42010-10-06 10:11:56 +0000277.. c:function:: const char* Py_GetPlatform()
Georg Brandl116aa622007-08-15 14:28:22 +0000278
279 .. index:: single: platform (in module sys)
280
281 Return the platform identifier for the current platform. On Unix, this is
282 formed from the "official" name of the operating system, converted to lower
283 case, followed by the major revision number; e.g., for Solaris 2.x, which is
284 also known as SunOS 5.x, the value is ``'sunos5'``. On Mac OS X, it is
285 ``'darwin'``. On Windows, it is ``'win'``. The returned string points into
286 static storage; the caller should not modify its value. The value is available
287 to Python code as ``sys.platform``.
288
289
Georg Brandl60203b42010-10-06 10:11:56 +0000290.. c:function:: const char* Py_GetCopyright()
Georg Brandl116aa622007-08-15 14:28:22 +0000291
292 Return the official copyright string for the current Python version, for example
293
294 ``'Copyright 1991-1995 Stichting Mathematisch Centrum, Amsterdam'``
295
296 .. index:: single: copyright (in module sys)
297
298 The returned string points into static storage; the caller should not modify its
299 value. The value is available to Python code as ``sys.copyright``.
300
301
Georg Brandl60203b42010-10-06 10:11:56 +0000302.. c:function:: const char* Py_GetCompiler()
Georg Brandl116aa622007-08-15 14:28:22 +0000303
304 Return an indication of the compiler used to build the current Python version,
305 in square brackets, for example::
306
307 "[GCC 2.7.2.2]"
308
309 .. index:: single: version (in module sys)
310
311 The returned string points into static storage; the caller should not modify its
312 value. The value is available to Python code as part of the variable
313 ``sys.version``.
314
315
Georg Brandl60203b42010-10-06 10:11:56 +0000316.. c:function:: const char* Py_GetBuildInfo()
Georg Brandl116aa622007-08-15 14:28:22 +0000317
318 Return information about the sequence number and build date and time of the
319 current Python interpreter instance, for example ::
320
321 "#67, Aug 1 1997, 22:34:28"
322
323 .. index:: single: version (in module sys)
324
325 The returned string points into static storage; the caller should not modify its
326 value. The value is available to Python code as part of the variable
327 ``sys.version``.
328
329
Georg Brandl60203b42010-10-06 10:11:56 +0000330.. c:function:: void PySys_SetArgvEx(int argc, wchar_t **argv, int updatepath)
Georg Brandl116aa622007-08-15 14:28:22 +0000331
332 .. index::
333 single: main()
334 single: Py_FatalError()
335 single: argv (in module sys)
336
Benjamin Peterson5c6d7872009-02-06 02:40:07 +0000337 Set :data:`sys.argv` based on *argc* and *argv*. These parameters are
Georg Brandl60203b42010-10-06 10:11:56 +0000338 similar to those passed to the program's :c:func:`main` function with the
Benjamin Peterson5c6d7872009-02-06 02:40:07 +0000339 difference that the first entry should refer to the script file to be
340 executed rather than the executable hosting the Python interpreter. If there
341 isn't a script that will be run, the first entry in *argv* can be an empty
342 string. If this function fails to initialize :data:`sys.argv`, a fatal
Georg Brandl60203b42010-10-06 10:11:56 +0000343 condition is signalled using :c:func:`Py_FatalError`.
Benjamin Peterson5c6d7872009-02-06 02:40:07 +0000344
Antoine Pitrouf978fac2010-05-21 17:25:34 +0000345 If *updatepath* is zero, this is all the function does. If *updatepath*
346 is non-zero, the function also modifies :data:`sys.path` according to the
347 following algorithm:
348
349 - If the name of an existing script is passed in ``argv[0]``, the absolute
350 path of the directory where the script is located is prepended to
351 :data:`sys.path`.
352 - Otherwise (that is, if *argc* is 0 or ``argv[0]`` doesn't point
353 to an existing file name), an empty string is prepended to
354 :data:`sys.path`, which is the same as prepending the current working
355 directory (``"."``).
356
Victor Stinner25e014b2014-08-01 12:28:49 +0200357 Use :c:func:`Py_DecodeLocale` to decode a bytes string to get a
358 :c:type:`wchar_*` string.
359
Antoine Pitrouf978fac2010-05-21 17:25:34 +0000360 .. note::
361 It is recommended that applications embedding the Python interpreter
362 for purposes other than executing a single script pass 0 as *updatepath*,
363 and update :data:`sys.path` themselves if desired.
Serhiy Storchaka6dff0202016-05-07 10:49:07 +0300364 See `CVE-2008-5983 <https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2008-5983>`_.
Antoine Pitrouf978fac2010-05-21 17:25:34 +0000365
366 On versions before 3.1.3, you can achieve the same effect by manually
367 popping the first :data:`sys.path` element after having called
Georg Brandl60203b42010-10-06 10:11:56 +0000368 :c:func:`PySys_SetArgv`, for example using::
Antoine Pitrouf978fac2010-05-21 17:25:34 +0000369
370 PyRun_SimpleString("import sys; sys.path.pop(0)\n");
371
372 .. versionadded:: 3.1.3
Georg Brandl116aa622007-08-15 14:28:22 +0000373
Christian Heimes5b5e81c2007-12-31 16:14:33 +0000374 .. XXX impl. doesn't seem consistent in allowing 0/NULL for the params;
375 check w/ Guido.
Georg Brandl116aa622007-08-15 14:28:22 +0000376
Georg Brandl116aa622007-08-15 14:28:22 +0000377
Georg Brandl60203b42010-10-06 10:11:56 +0000378.. c:function:: void PySys_SetArgv(int argc, wchar_t **argv)
Antoine Pitrouf978fac2010-05-21 17:25:34 +0000379
Christian Heimesad73a9c2013-08-10 16:36:18 +0200380 This function works like :c:func:`PySys_SetArgvEx` with *updatepath* set
381 to 1 unless the :program:`python` interpreter was started with the
382 :option:`-I`.
383
Victor Stinner25e014b2014-08-01 12:28:49 +0200384 Use :c:func:`Py_DecodeLocale` to decode a bytes string to get a
385 :c:type:`wchar_*` string.
386
Christian Heimesad73a9c2013-08-10 16:36:18 +0200387 .. versionchanged:: 3.4 The *updatepath* value depends on :option:`-I`.
Antoine Pitrouf978fac2010-05-21 17:25:34 +0000388
389
Georg Brandl60203b42010-10-06 10:11:56 +0000390.. c:function:: void Py_SetPythonHome(wchar_t *home)
Benjamin Peterson5c6d7872009-02-06 02:40:07 +0000391
392 Set the default "home" directory, that is, the location of the standard
Georg Brandlde0ab5e2010-12-02 18:02:01 +0000393 Python libraries. See :envvar:`PYTHONHOME` for the meaning of the
394 argument string.
395
Benjamin Peterson4ac9ce42009-10-04 14:49:41 +0000396 The argument should point to a zero-terminated character string in static
397 storage whose contents will not change for the duration of the program's
398 execution. No code in the Python interpreter will change the contents of
399 this storage.
Benjamin Peterson5c6d7872009-02-06 02:40:07 +0000400
Victor Stinner25e014b2014-08-01 12:28:49 +0200401 Use :c:func:`Py_DecodeLocale` to decode a bytes string to get a
402 :c:type:`wchar_*` string.
403
Benjamin Peterson5c6d7872009-02-06 02:40:07 +0000404
Georg Brandl60203b42010-10-06 10:11:56 +0000405.. c:function:: w_char* Py_GetPythonHome()
Benjamin Peterson5c6d7872009-02-06 02:40:07 +0000406
407 Return the default "home", that is, the value set by a previous call to
Georg Brandl60203b42010-10-06 10:11:56 +0000408 :c:func:`Py_SetPythonHome`, or the value of the :envvar:`PYTHONHOME`
Benjamin Peterson5c6d7872009-02-06 02:40:07 +0000409 environment variable if it is set.
410
411
Georg Brandl116aa622007-08-15 14:28:22 +0000412.. _threads:
413
414Thread State and the Global Interpreter Lock
415============================================
416
417.. index::
418 single: global interpreter lock
419 single: interpreter lock
420 single: lock, interpreter
421
Georg Brandlf285bcc2010-10-19 21:07:16 +0000422The Python interpreter is not fully thread-safe. In order to support
Antoine Pitroubedd2c22011-01-15 12:54:19 +0000423multi-threaded Python programs, there's a global lock, called the :term:`global
424interpreter lock` or :term:`GIL`, that must be held by the current thread before
Benjamin Petersonef3e4c22009-04-11 19:48:14 +0000425it can safely access Python objects. Without the lock, even the simplest
426operations could cause problems in a multi-threaded program: for example, when
427two threads simultaneously increment the reference count of the same object, the
428reference count could end up being incremented only once instead of twice.
Georg Brandl116aa622007-08-15 14:28:22 +0000429
Antoine Pitroubedd2c22011-01-15 12:54:19 +0000430.. index:: single: setswitchinterval() (in module sys)
Georg Brandl116aa622007-08-15 14:28:22 +0000431
Antoine Pitroubedd2c22011-01-15 12:54:19 +0000432Therefore, the rule exists that only the thread that has acquired the
433:term:`GIL` may operate on Python objects or call Python/C API functions.
434In order to emulate concurrency of execution, the interpreter regularly
435tries to switch threads (see :func:`sys.setswitchinterval`). The lock is also
436released around potentially blocking I/O operations like reading or writing
437a file, so that other Python threads can run in the meantime.
Georg Brandl116aa622007-08-15 14:28:22 +0000438
439.. index::
440 single: PyThreadState
441 single: PyThreadState
442
Antoine Pitroubedd2c22011-01-15 12:54:19 +0000443The Python interpreter keeps some thread-specific bookkeeping information
444inside a data structure called :c:type:`PyThreadState`. There's also one
445global variable pointing to the current :c:type:`PyThreadState`: it can
446be retrieved using :c:func:`PyThreadState_Get`.
Georg Brandl116aa622007-08-15 14:28:22 +0000447
Antoine Pitroubedd2c22011-01-15 12:54:19 +0000448Releasing the GIL from extension code
449-------------------------------------
450
451Most extension code manipulating the :term:`GIL` has the following simple
452structure::
Georg Brandl116aa622007-08-15 14:28:22 +0000453
454 Save the thread state in a local variable.
Benjamin Petersonef3e4c22009-04-11 19:48:14 +0000455 Release the global interpreter lock.
Antoine Pitroubedd2c22011-01-15 12:54:19 +0000456 ... Do some blocking I/O operation ...
Benjamin Petersonef3e4c22009-04-11 19:48:14 +0000457 Reacquire the global interpreter lock.
Georg Brandl116aa622007-08-15 14:28:22 +0000458 Restore the thread state from the local variable.
459
460This is so common that a pair of macros exists to simplify it::
461
462 Py_BEGIN_ALLOW_THREADS
Antoine Pitroubedd2c22011-01-15 12:54:19 +0000463 ... Do some blocking I/O operation ...
Georg Brandl116aa622007-08-15 14:28:22 +0000464 Py_END_ALLOW_THREADS
465
466.. index::
467 single: Py_BEGIN_ALLOW_THREADS
468 single: Py_END_ALLOW_THREADS
469
Georg Brandl60203b42010-10-06 10:11:56 +0000470The :c:macro:`Py_BEGIN_ALLOW_THREADS` macro opens a new block and declares a
471hidden local variable; the :c:macro:`Py_END_ALLOW_THREADS` macro closes the
Antoine Pitroubedd2c22011-01-15 12:54:19 +0000472block. These two macros are still available when Python is compiled without
473thread support (they simply have an empty expansion).
Georg Brandl116aa622007-08-15 14:28:22 +0000474
475When thread support is enabled, the block above expands to the following code::
476
477 PyThreadState *_save;
478
479 _save = PyEval_SaveThread();
480 ...Do some blocking I/O operation...
481 PyEval_RestoreThread(_save);
482
Georg Brandl116aa622007-08-15 14:28:22 +0000483.. index::
484 single: PyEval_RestoreThread()
Georg Brandl116aa622007-08-15 14:28:22 +0000485 single: PyEval_SaveThread()
Georg Brandl116aa622007-08-15 14:28:22 +0000486
Antoine Pitroubedd2c22011-01-15 12:54:19 +0000487Here is how these functions work: the global interpreter lock is used to protect the pointer to the
488current thread state. When releasing the lock and saving the thread state,
489the current thread state pointer must be retrieved before the lock is released
490(since another thread could immediately acquire the lock and store its own thread
491state in the global variable). Conversely, when acquiring the lock and restoring
492the thread state, the lock must be acquired before storing the thread state
493pointer.
Georg Brandl116aa622007-08-15 14:28:22 +0000494
Antoine Pitroubedd2c22011-01-15 12:54:19 +0000495.. note::
496 Calling system I/O functions is the most common use case for releasing
497 the GIL, but it can also be useful before calling long-running computations
498 which don't need access to Python objects, such as compression or
499 cryptographic functions operating over memory buffers. For example, the
500 standard :mod:`zlib` and :mod:`hashlib` modules release the GIL when
501 compressing or hashing data.
Georg Brandl116aa622007-08-15 14:28:22 +0000502
Antoine Pitrou1a67bee2013-09-30 21:35:44 +0200503
504.. _gilstate:
505
Antoine Pitroubedd2c22011-01-15 12:54:19 +0000506Non-Python created threads
507--------------------------
Georg Brandl116aa622007-08-15 14:28:22 +0000508
Antoine Pitroubedd2c22011-01-15 12:54:19 +0000509When threads are created using the dedicated Python APIs (such as the
510:mod:`threading` module), a thread state is automatically associated to them
511and the code showed above is therefore correct. However, when threads are
512created from C (for example by a third-party library with its own thread
513management), they don't hold the GIL, nor is there a thread state structure
514for them.
515
516If you need to call Python code from these threads (often this will be part
517of a callback API provided by the aforementioned third-party library),
518you must first register these threads with the interpreter by
519creating a thread state data structure, then acquiring the GIL, and finally
520storing their thread state pointer, before you can start using the Python/C
521API. When you are done, you should reset the thread state pointer, release
522the GIL, and finally free the thread state data structure.
523
524The :c:func:`PyGILState_Ensure` and :c:func:`PyGILState_Release` functions do
525all of the above automatically. The typical idiom for calling into Python
526from a C thread is::
Georg Brandl116aa622007-08-15 14:28:22 +0000527
528 PyGILState_STATE gstate;
529 gstate = PyGILState_Ensure();
530
Antoine Pitroubedd2c22011-01-15 12:54:19 +0000531 /* Perform Python actions here. */
Georg Brandl116aa622007-08-15 14:28:22 +0000532 result = CallSomeFunction();
Antoine Pitroubedd2c22011-01-15 12:54:19 +0000533 /* evaluate result or handle exception */
Georg Brandl116aa622007-08-15 14:28:22 +0000534
535 /* Release the thread. No Python API allowed beyond this point. */
536 PyGILState_Release(gstate);
537
Georg Brandl60203b42010-10-06 10:11:56 +0000538Note that the :c:func:`PyGILState_\*` functions assume there is only one global
Antoine Pitroubedd2c22011-01-15 12:54:19 +0000539interpreter (created automatically by :c:func:`Py_Initialize`). Python
Georg Brandl116aa622007-08-15 14:28:22 +0000540supports the creation of additional interpreters (using
Georg Brandl60203b42010-10-06 10:11:56 +0000541:c:func:`Py_NewInterpreter`), but mixing multiple interpreters and the
542:c:func:`PyGILState_\*` API is unsupported.
Georg Brandl116aa622007-08-15 14:28:22 +0000543
Benjamin Peterson0df35a92009-10-04 20:32:25 +0000544Another important thing to note about threads is their behaviour in the face
Georg Brandl60203b42010-10-06 10:11:56 +0000545of the C :c:func:`fork` call. On most systems with :c:func:`fork`, after a
Benjamin Peterson0df35a92009-10-04 20:32:25 +0000546process forks only the thread that issued the fork will exist. That also
547means any locks held by other threads will never be released. Python solves
548this for :func:`os.fork` by acquiring the locks it uses internally before
549the fork, and releasing them afterwards. In addition, it resets any
550:ref:`lock-objects` in the child. When extending or embedding Python, there
551is no way to inform Python of additional (non-Python) locks that need to be
552acquired before or reset after a fork. OS facilities such as
Ezio Melotti861d27f2011-04-20 21:32:40 +0300553:c:func:`pthread_atfork` would need to be used to accomplish the same thing.
Georg Brandl60203b42010-10-06 10:11:56 +0000554Additionally, when extending or embedding Python, calling :c:func:`fork`
Benjamin Peterson0df35a92009-10-04 20:32:25 +0000555directly rather than through :func:`os.fork` (and returning to or calling
556into Python) may result in a deadlock by one of Python's internal locks
557being held by a thread that is defunct after the fork.
Georg Brandl60203b42010-10-06 10:11:56 +0000558:c:func:`PyOS_AfterFork` tries to reset the necessary locks, but is not
Benjamin Peterson0df35a92009-10-04 20:32:25 +0000559always able to.
Georg Brandl116aa622007-08-15 14:28:22 +0000560
Antoine Pitrou8b50b832011-01-15 11:57:42 +0000561
Antoine Pitroubedd2c22011-01-15 12:54:19 +0000562High-level API
563--------------
564
565These are the most commonly used types and functions when writing C extension
566code, or when embedding the Python interpreter:
567
Georg Brandl60203b42010-10-06 10:11:56 +0000568.. c:type:: PyInterpreterState
Georg Brandl116aa622007-08-15 14:28:22 +0000569
570 This data structure represents the state shared by a number of cooperating
571 threads. Threads belonging to the same interpreter share their module
572 administration and a few other internal items. There are no public members in
573 this structure.
574
575 Threads belonging to different interpreters initially share nothing, except
576 process state like available memory, open file descriptors and such. The global
577 interpreter lock is also shared by all threads, regardless of to which
578 interpreter they belong.
579
580
Georg Brandl60203b42010-10-06 10:11:56 +0000581.. c:type:: PyThreadState
Georg Brandl116aa622007-08-15 14:28:22 +0000582
583 This data structure represents the state of a single thread. The only public
Georg Brandl60203b42010-10-06 10:11:56 +0000584 data member is :c:type:`PyInterpreterState \*`:attr:`interp`, which points to
Georg Brandl116aa622007-08-15 14:28:22 +0000585 this thread's interpreter state.
586
587
Georg Brandl60203b42010-10-06 10:11:56 +0000588.. c:function:: void PyEval_InitThreads()
Georg Brandl116aa622007-08-15 14:28:22 +0000589
590 .. index::
Antoine Pitrouf5cf4352011-01-15 14:31:49 +0000591 single: PyEval_AcquireThread()
Georg Brandl116aa622007-08-15 14:28:22 +0000592 single: PyEval_ReleaseThread()
593 single: PyEval_SaveThread()
594 single: PyEval_RestoreThread()
595
596 Initialize and acquire the global interpreter lock. It should be called in the
597 main thread before creating a second thread or engaging in any other thread
Antoine Pitrouf5cf4352011-01-15 14:31:49 +0000598 operations such as ``PyEval_ReleaseThread(tstate)``. It is not needed before
599 calling :c:func:`PyEval_SaveThread` or :c:func:`PyEval_RestoreThread`.
Georg Brandl116aa622007-08-15 14:28:22 +0000600
Antoine Pitrou9bd3bbc2011-03-13 23:28:28 +0100601 This is a no-op when called for a second time.
Georg Brandl116aa622007-08-15 14:28:22 +0000602
Antoine Pitrou9bb98772011-03-15 20:22:50 +0100603 .. versionchanged:: 3.2
604 This function cannot be called before :c:func:`Py_Initialize()` anymore.
605
Georg Brandl2067bfd2008-05-25 13:05:15 +0000606 .. index:: module: _thread
Georg Brandl116aa622007-08-15 14:28:22 +0000607
Antoine Pitroubedd2c22011-01-15 12:54:19 +0000608 .. note::
Éric Araujofa5e6e42014-03-12 19:51:00 -0400609
Antoine Pitroubedd2c22011-01-15 12:54:19 +0000610 When only the main thread exists, no GIL operations are needed. This is a
611 common situation (most Python programs do not use threads), and the lock
612 operations slow the interpreter down a bit. Therefore, the lock is not
613 created initially. This situation is equivalent to having acquired the lock:
614 when there is only a single thread, all object accesses are safe. Therefore,
615 when this function initializes the global interpreter lock, it also acquires
616 it. Before the Python :mod:`_thread` module creates a new thread, knowing
617 that either it has the lock or the lock hasn't been created yet, it calls
618 :c:func:`PyEval_InitThreads`. When this call returns, it is guaranteed that
619 the lock has been created and that the calling thread has acquired it.
Georg Brandl116aa622007-08-15 14:28:22 +0000620
Antoine Pitroubedd2c22011-01-15 12:54:19 +0000621 It is **not** safe to call this function when it is unknown which thread (if
622 any) currently has the global interpreter lock.
Georg Brandl116aa622007-08-15 14:28:22 +0000623
Antoine Pitroubedd2c22011-01-15 12:54:19 +0000624 This function is not available when thread support is disabled at compile time.
Georg Brandl116aa622007-08-15 14:28:22 +0000625
626
Georg Brandl60203b42010-10-06 10:11:56 +0000627.. c:function:: int PyEval_ThreadsInitialized()
Georg Brandl116aa622007-08-15 14:28:22 +0000628
Georg Brandl60203b42010-10-06 10:11:56 +0000629 Returns a non-zero value if :c:func:`PyEval_InitThreads` has been called. This
Benjamin Petersonef3e4c22009-04-11 19:48:14 +0000630 function can be called without holding the GIL, and therefore can be used to
Georg Brandl116aa622007-08-15 14:28:22 +0000631 avoid calls to the locking API when running single-threaded. This function is
632 not available when thread support is disabled at compile time.
633
Georg Brandl116aa622007-08-15 14:28:22 +0000634
Georg Brandl60203b42010-10-06 10:11:56 +0000635.. c:function:: PyThreadState* PyEval_SaveThread()
Georg Brandl116aa622007-08-15 14:28:22 +0000636
Benjamin Petersonef3e4c22009-04-11 19:48:14 +0000637 Release the global interpreter lock (if it has been created and thread
638 support is enabled) and reset the thread state to *NULL*, returning the
639 previous thread state (which is not *NULL*). If the lock has been created,
640 the current thread must have acquired it. (This function is available even
641 when thread support is disabled at compile time.)
Georg Brandl116aa622007-08-15 14:28:22 +0000642
643
Georg Brandl60203b42010-10-06 10:11:56 +0000644.. c:function:: void PyEval_RestoreThread(PyThreadState *tstate)
Georg Brandl116aa622007-08-15 14:28:22 +0000645
Benjamin Petersonef3e4c22009-04-11 19:48:14 +0000646 Acquire the global interpreter lock (if it has been created and thread
647 support is enabled) and set the thread state to *tstate*, which must not be
648 *NULL*. If the lock has been created, the current thread must not have
649 acquired it, otherwise deadlock ensues. (This function is available even
650 when thread support is disabled at compile time.)
Georg Brandl116aa622007-08-15 14:28:22 +0000651
Christian Heimesd8654cf2007-12-02 15:22:16 +0000652
Antoine Pitroubedd2c22011-01-15 12:54:19 +0000653.. c:function:: PyThreadState* PyThreadState_Get()
654
655 Return the current thread state. The global interpreter lock must be held.
656 When the current thread state is *NULL*, this issues a fatal error (so that
657 the caller needn't check for *NULL*).
658
659
660.. c:function:: PyThreadState* PyThreadState_Swap(PyThreadState *tstate)
661
662 Swap the current thread state with the thread state given by the argument
663 *tstate*, which may be *NULL*. The global interpreter lock must be held
664 and is not released.
665
666
Georg Brandl60203b42010-10-06 10:11:56 +0000667.. c:function:: void PyEval_ReInitThreads()
Christian Heimesd8654cf2007-12-02 15:22:16 +0000668
Georg Brandl60203b42010-10-06 10:11:56 +0000669 This function is called from :c:func:`PyOS_AfterFork` to ensure that newly
Christian Heimesd8654cf2007-12-02 15:22:16 +0000670 created child processes don't hold locks referring to threads which
671 are not running in the child process.
672
673
Antoine Pitroubedd2c22011-01-15 12:54:19 +0000674The following functions use thread-local storage, and are not compatible
675with sub-interpreters:
676
677.. c:function:: PyGILState_STATE PyGILState_Ensure()
678
679 Ensure that the current thread is ready to call the Python C API regardless
680 of the current state of Python, or of the global interpreter lock. This may
681 be called as many times as desired by a thread as long as each call is
682 matched with a call to :c:func:`PyGILState_Release`. In general, other
683 thread-related APIs may be used between :c:func:`PyGILState_Ensure` and
684 :c:func:`PyGILState_Release` calls as long as the thread state is restored to
685 its previous state before the Release(). For example, normal usage of the
686 :c:macro:`Py_BEGIN_ALLOW_THREADS` and :c:macro:`Py_END_ALLOW_THREADS` macros is
687 acceptable.
688
689 The return value is an opaque "handle" to the thread state when
690 :c:func:`PyGILState_Ensure` was called, and must be passed to
691 :c:func:`PyGILState_Release` to ensure Python is left in the same state. Even
692 though recursive calls are allowed, these handles *cannot* be shared - each
693 unique call to :c:func:`PyGILState_Ensure` must save the handle for its call
694 to :c:func:`PyGILState_Release`.
695
696 When the function returns, the current thread will hold the GIL and be able
697 to call arbitrary Python code. Failure is a fatal error.
698
699
700.. c:function:: void PyGILState_Release(PyGILState_STATE)
701
702 Release any resources previously acquired. After this call, Python's state will
703 be the same as it was prior to the corresponding :c:func:`PyGILState_Ensure` call
704 (but generally this state will be unknown to the caller, hence the use of the
705 GILState API).
706
707 Every call to :c:func:`PyGILState_Ensure` must be matched by a call to
708 :c:func:`PyGILState_Release` on the same thread.
709
710
Eli Bendersky08131682012-06-03 08:07:47 +0300711.. c:function:: PyThreadState* PyGILState_GetThisThreadState()
Sandro Tosi61baee02011-08-08 00:16:54 +0200712
713 Get the current thread state for this thread. May return ``NULL`` if no
714 GILState API has been used on the current thread. Note that the main thread
715 always has such a thread-state, even if no auto-thread-state call has been
716 made on the main thread. This is mainly a helper/diagnostic function.
717
718
Kristján Valur Jónsson684cd0e2013-03-23 03:36:16 -0700719.. c:function:: int PyGILState_Check()
720
721 Return 1 if the current thread is holding the GIL and 0 otherwise.
722 This function can be called from any thread at any time.
723 Only if it has had its Python thread state initialized and currently is
724 holding the GIL will it return 1.
725 This is mainly a helper/diagnostic function. It can be useful
726 for example in callback contexts or memory allocation functions when
727 knowing that the GIL is locked can allow the caller to perform sensitive
728 actions or otherwise behave differently.
729
Kristján Valur Jónsson34870c42013-03-23 03:56:16 -0700730 .. versionadded:: 3.4
731
Kristján Valur Jónsson684cd0e2013-03-23 03:36:16 -0700732
Georg Brandl116aa622007-08-15 14:28:22 +0000733The following macros are normally used without a trailing semicolon; look for
734example usage in the Python source distribution.
735
736
Georg Brandl60203b42010-10-06 10:11:56 +0000737.. c:macro:: Py_BEGIN_ALLOW_THREADS
Georg Brandl116aa622007-08-15 14:28:22 +0000738
739 This macro expands to ``{ PyThreadState *_save; _save = PyEval_SaveThread();``.
740 Note that it contains an opening brace; it must be matched with a following
Georg Brandl60203b42010-10-06 10:11:56 +0000741 :c:macro:`Py_END_ALLOW_THREADS` macro. See above for further discussion of this
Georg Brandl116aa622007-08-15 14:28:22 +0000742 macro. It is a no-op when thread support is disabled at compile time.
743
744
Georg Brandl60203b42010-10-06 10:11:56 +0000745.. c:macro:: Py_END_ALLOW_THREADS
Georg Brandl116aa622007-08-15 14:28:22 +0000746
747 This macro expands to ``PyEval_RestoreThread(_save); }``. Note that it contains
748 a closing brace; it must be matched with an earlier
Georg Brandl60203b42010-10-06 10:11:56 +0000749 :c:macro:`Py_BEGIN_ALLOW_THREADS` macro. See above for further discussion of
Georg Brandl116aa622007-08-15 14:28:22 +0000750 this macro. It is a no-op when thread support is disabled at compile time.
751
752
Georg Brandl60203b42010-10-06 10:11:56 +0000753.. c:macro:: Py_BLOCK_THREADS
Georg Brandl116aa622007-08-15 14:28:22 +0000754
755 This macro expands to ``PyEval_RestoreThread(_save);``: it is equivalent to
Georg Brandl60203b42010-10-06 10:11:56 +0000756 :c:macro:`Py_END_ALLOW_THREADS` without the closing brace. It is a no-op when
Georg Brandl116aa622007-08-15 14:28:22 +0000757 thread support is disabled at compile time.
758
759
Georg Brandl60203b42010-10-06 10:11:56 +0000760.. c:macro:: Py_UNBLOCK_THREADS
Georg Brandl116aa622007-08-15 14:28:22 +0000761
762 This macro expands to ``_save = PyEval_SaveThread();``: it is equivalent to
Georg Brandl60203b42010-10-06 10:11:56 +0000763 :c:macro:`Py_BEGIN_ALLOW_THREADS` without the opening brace and variable
Georg Brandl116aa622007-08-15 14:28:22 +0000764 declaration. It is a no-op when thread support is disabled at compile time.
765
Antoine Pitroubedd2c22011-01-15 12:54:19 +0000766
767Low-level API
768-------------
769
Georg Brandl116aa622007-08-15 14:28:22 +0000770All of the following functions are only available when thread support is enabled
Benjamin Petersonef3e4c22009-04-11 19:48:14 +0000771at compile time, and must be called only when the global interpreter lock has
772been created.
Georg Brandl116aa622007-08-15 14:28:22 +0000773
774
Georg Brandl60203b42010-10-06 10:11:56 +0000775.. c:function:: PyInterpreterState* PyInterpreterState_New()
Georg Brandl116aa622007-08-15 14:28:22 +0000776
Benjamin Petersonef3e4c22009-04-11 19:48:14 +0000777 Create a new interpreter state object. The global interpreter lock need not
778 be held, but may be held if it is necessary to serialize calls to this
779 function.
Georg Brandl116aa622007-08-15 14:28:22 +0000780
781
Georg Brandl60203b42010-10-06 10:11:56 +0000782.. c:function:: void PyInterpreterState_Clear(PyInterpreterState *interp)
Georg Brandl116aa622007-08-15 14:28:22 +0000783
Benjamin Petersonef3e4c22009-04-11 19:48:14 +0000784 Reset all information in an interpreter state object. The global interpreter
785 lock must be held.
Georg Brandl116aa622007-08-15 14:28:22 +0000786
787
Georg Brandl60203b42010-10-06 10:11:56 +0000788.. c:function:: void PyInterpreterState_Delete(PyInterpreterState *interp)
Georg Brandl116aa622007-08-15 14:28:22 +0000789
Benjamin Petersonef3e4c22009-04-11 19:48:14 +0000790 Destroy an interpreter state object. The global interpreter lock need not be
791 held. The interpreter state must have been reset with a previous call to
Georg Brandl60203b42010-10-06 10:11:56 +0000792 :c:func:`PyInterpreterState_Clear`.
Georg Brandl116aa622007-08-15 14:28:22 +0000793
794
Georg Brandl60203b42010-10-06 10:11:56 +0000795.. c:function:: PyThreadState* PyThreadState_New(PyInterpreterState *interp)
Georg Brandl116aa622007-08-15 14:28:22 +0000796
Benjamin Petersonef3e4c22009-04-11 19:48:14 +0000797 Create a new thread state object belonging to the given interpreter object.
798 The global interpreter lock need not be held, but may be held if it is
799 necessary to serialize calls to this function.
Georg Brandl116aa622007-08-15 14:28:22 +0000800
801
Georg Brandl60203b42010-10-06 10:11:56 +0000802.. c:function:: void PyThreadState_Clear(PyThreadState *tstate)
Georg Brandl116aa622007-08-15 14:28:22 +0000803
Benjamin Petersonef3e4c22009-04-11 19:48:14 +0000804 Reset all information in a thread state object. The global interpreter lock
805 must be held.
Georg Brandl116aa622007-08-15 14:28:22 +0000806
807
Georg Brandl60203b42010-10-06 10:11:56 +0000808.. c:function:: void PyThreadState_Delete(PyThreadState *tstate)
Georg Brandl116aa622007-08-15 14:28:22 +0000809
Benjamin Petersonef3e4c22009-04-11 19:48:14 +0000810 Destroy a thread state object. The global interpreter lock need not be held.
811 The thread state must have been reset with a previous call to
Georg Brandl60203b42010-10-06 10:11:56 +0000812 :c:func:`PyThreadState_Clear`.
Georg Brandl116aa622007-08-15 14:28:22 +0000813
814
Georg Brandl60203b42010-10-06 10:11:56 +0000815.. c:function:: PyObject* PyThreadState_GetDict()
Georg Brandl116aa622007-08-15 14:28:22 +0000816
817 Return a dictionary in which extensions can store thread-specific state
818 information. Each extension should use a unique key to use to store state in
819 the dictionary. It is okay to call this function when no current thread state
820 is available. If this function returns *NULL*, no exception has been raised and
821 the caller should assume no current thread state is available.
822
Georg Brandl116aa622007-08-15 14:28:22 +0000823
Georg Brandl60203b42010-10-06 10:11:56 +0000824.. c:function:: int PyThreadState_SetAsyncExc(long id, PyObject *exc)
Georg Brandl116aa622007-08-15 14:28:22 +0000825
826 Asynchronously raise an exception in a thread. The *id* argument is the thread
827 id of the target thread; *exc* is the exception object to be raised. This
828 function does not steal any references to *exc*. To prevent naive misuse, you
829 must write your own C extension to call this. Must be called with the GIL held.
830 Returns the number of thread states modified; this is normally one, but will be
831 zero if the thread id isn't found. If *exc* is :const:`NULL`, the pending
832 exception (if any) for the thread is cleared. This raises no exceptions.
833
Georg Brandl116aa622007-08-15 14:28:22 +0000834
Antoine Pitroubedd2c22011-01-15 12:54:19 +0000835.. c:function:: void PyEval_AcquireThread(PyThreadState *tstate)
Georg Brandl116aa622007-08-15 14:28:22 +0000836
Antoine Pitroubedd2c22011-01-15 12:54:19 +0000837 Acquire the global interpreter lock and set the current thread state to
838 *tstate*, which should not be *NULL*. The lock must have been created earlier.
839 If this thread already has the lock, deadlock ensues.
Georg Brandl116aa622007-08-15 14:28:22 +0000840
Antoine Pitrou5ace8e92011-01-15 13:11:48 +0000841 :c:func:`PyEval_RestoreThread` is a higher-level function which is always
842 available (even when thread support isn't enabled or when threads have
843 not been initialized).
844
Georg Brandl116aa622007-08-15 14:28:22 +0000845
Antoine Pitroubedd2c22011-01-15 12:54:19 +0000846.. c:function:: void PyEval_ReleaseThread(PyThreadState *tstate)
Georg Brandl116aa622007-08-15 14:28:22 +0000847
Antoine Pitroubedd2c22011-01-15 12:54:19 +0000848 Reset the current thread state to *NULL* and release the global interpreter
849 lock. The lock must have been created earlier and must be held by the current
850 thread. The *tstate* argument, which must not be *NULL*, is only used to check
851 that it represents the current thread state --- if it isn't, a fatal error is
852 reported.
Georg Brandl116aa622007-08-15 14:28:22 +0000853
Antoine Pitrou5ace8e92011-01-15 13:11:48 +0000854 :c:func:`PyEval_SaveThread` is a higher-level function which is always
855 available (even when thread support isn't enabled or when threads have
856 not been initialized).
857
Antoine Pitroubedd2c22011-01-15 12:54:19 +0000858
859.. c:function:: void PyEval_AcquireLock()
860
861 Acquire the global interpreter lock. The lock must have been created earlier.
862 If this thread already has the lock, a deadlock ensues.
863
Antoine Pitrou5ace8e92011-01-15 13:11:48 +0000864 .. deprecated:: 3.2
Antoine Pitrouf5cf4352011-01-15 14:31:49 +0000865 This function does not update the current thread state. Please use
Antoine Pitrou5ace8e92011-01-15 13:11:48 +0000866 :c:func:`PyEval_RestoreThread` or :c:func:`PyEval_AcquireThread`
867 instead.
868
Antoine Pitroubedd2c22011-01-15 12:54:19 +0000869
870.. c:function:: void PyEval_ReleaseLock()
871
872 Release the global interpreter lock. The lock must have been created earlier.
Georg Brandl116aa622007-08-15 14:28:22 +0000873
Antoine Pitrou5ace8e92011-01-15 13:11:48 +0000874 .. deprecated:: 3.2
Antoine Pitrouf5cf4352011-01-15 14:31:49 +0000875 This function does not update the current thread state. Please use
Antoine Pitrou5ace8e92011-01-15 13:11:48 +0000876 :c:func:`PyEval_SaveThread` or :c:func:`PyEval_ReleaseThread`
877 instead.
878
Georg Brandl116aa622007-08-15 14:28:22 +0000879
Nick Coghlan2ab5b092015-07-03 19:49:15 +1000880.. _sub-interpreter-support:
881
Antoine Pitrou8b50b832011-01-15 11:57:42 +0000882Sub-interpreter support
883=======================
884
885While in most uses, you will only embed a single Python interpreter, there
886are cases where you need to create several independent interpreters in the
887same process and perhaps even in the same thread. Sub-interpreters allow
Antoine Pitrou9bf8d1c2011-01-15 12:21:53 +0000888you to do that. You can switch between sub-interpreters using the
889:c:func:`PyThreadState_Swap` function. You can create and destroy them
890using the following functions:
Antoine Pitrou8b50b832011-01-15 11:57:42 +0000891
892
893.. c:function:: PyThreadState* Py_NewInterpreter()
894
895 .. index::
896 module: builtins
897 module: __main__
898 module: sys
899 single: stdout (in module sys)
900 single: stderr (in module sys)
901 single: stdin (in module sys)
902
903 Create a new sub-interpreter. This is an (almost) totally separate environment
904 for the execution of Python code. In particular, the new interpreter has
905 separate, independent versions of all imported modules, including the
906 fundamental modules :mod:`builtins`, :mod:`__main__` and :mod:`sys`. The
907 table of loaded modules (``sys.modules``) and the module search path
908 (``sys.path``) are also separate. The new environment has no ``sys.argv``
909 variable. It has new standard I/O stream file objects ``sys.stdin``,
910 ``sys.stdout`` and ``sys.stderr`` (however these refer to the same underlying
911 file descriptors).
912
913 The return value points to the first thread state created in the new
914 sub-interpreter. This thread state is made in the current thread state.
915 Note that no actual thread is created; see the discussion of thread states
916 below. If creation of the new interpreter is unsuccessful, *NULL* is
917 returned; no exception is set since the exception state is stored in the
918 current thread state and there may not be a current thread state. (Like all
919 other Python/C API functions, the global interpreter lock must be held before
920 calling this function and is still held when it returns; however, unlike most
921 other Python/C API functions, there needn't be a current thread state on
922 entry.)
923
924 .. index::
925 single: Py_Finalize()
926 single: Py_Initialize()
927
928 Extension modules are shared between (sub-)interpreters as follows: the first
929 time a particular extension is imported, it is initialized normally, and a
930 (shallow) copy of its module's dictionary is squirreled away. When the same
931 extension is imported by another (sub-)interpreter, a new module is initialized
932 and filled with the contents of this copy; the extension's ``init`` function is
933 not called. Note that this is different from what happens when an extension is
934 imported after the interpreter has been completely re-initialized by calling
935 :c:func:`Py_Finalize` and :c:func:`Py_Initialize`; in that case, the extension's
936 ``initmodule`` function *is* called again.
937
938 .. index:: single: close() (in module os)
939
940
941.. c:function:: void Py_EndInterpreter(PyThreadState *tstate)
942
943 .. index:: single: Py_Finalize()
944
945 Destroy the (sub-)interpreter represented by the given thread state. The given
946 thread state must be the current thread state. See the discussion of thread
947 states below. When the call returns, the current thread state is *NULL*. All
948 thread states associated with this interpreter are destroyed. (The global
949 interpreter lock must be held before calling this function and is still held
950 when it returns.) :c:func:`Py_Finalize` will destroy all sub-interpreters that
951 haven't been explicitly destroyed at that point.
952
953
954Bugs and caveats
955----------------
956
957Because sub-interpreters (and the main interpreter) are part of the same
958process, the insulation between them isn't perfect --- for example, using
959low-level file operations like :func:`os.close` they can
960(accidentally or maliciously) affect each other's open files. Because of the
961way extensions are shared between (sub-)interpreters, some extensions may not
962work properly; this is especially likely when the extension makes use of
963(static) global variables, or when the extension manipulates its module's
964dictionary after its initialization. It is possible to insert objects created
965in one sub-interpreter into a namespace of another sub-interpreter; this should
966be done with great care to avoid sharing user-defined functions, methods,
967instances or classes between sub-interpreters, since import operations executed
968by such objects may affect the wrong (sub-)interpreter's dictionary of loaded
Antoine Pitrouf1dfe732011-01-15 12:10:48 +0000969modules.
Antoine Pitrou8b50b832011-01-15 11:57:42 +0000970
Antoine Pitrouf1dfe732011-01-15 12:10:48 +0000971Also note that combining this functionality with :c:func:`PyGILState_\*` APIs
Ezio Melottid92ab082011-05-05 14:19:48 +0300972is delicate, because these APIs assume a bijection between Python thread states
Antoine Pitrouf1dfe732011-01-15 12:10:48 +0000973and OS-level threads, an assumption broken by the presence of sub-interpreters.
974It is highly recommended that you don't switch sub-interpreters between a pair
975of matching :c:func:`PyGILState_Ensure` and :c:func:`PyGILState_Release` calls.
976Furthermore, extensions (such as :mod:`ctypes`) using these APIs to allow calling
977of Python code from non-Python created threads will probably be broken when using
978sub-interpreters.
Antoine Pitrou8b50b832011-01-15 11:57:42 +0000979
Benjamin Petersona54c9092009-01-13 02:11:23 +0000980
981Asynchronous Notifications
982==========================
983
Benjamin Petersond23f8222009-04-05 19:13:16 +0000984A mechanism is provided to make asynchronous notifications to the main
Benjamin Petersona54c9092009-01-13 02:11:23 +0000985interpreter thread. These notifications take the form of a function
Antoine Pitrou1a67bee2013-09-30 21:35:44 +0200986pointer and a void pointer argument.
Benjamin Petersona54c9092009-01-13 02:11:23 +0000987
Benjamin Petersona54c9092009-01-13 02:11:23 +0000988
Ezio Melottia782cca2011-04-28 00:53:14 +0300989.. c:function:: int Py_AddPendingCall(int (*func)(void *), void *arg)
Benjamin Petersona54c9092009-01-13 02:11:23 +0000990
991 .. index:: single: Py_AddPendingCall()
992
Antoine Pitrou1a67bee2013-09-30 21:35:44 +0200993 Schedule a function to be called from the main interpreter thread. On
994 success, 0 is returned and *func* is queued for being called in the
995 main thread. On failure, -1 is returned without setting any exception.
Benjamin Petersona54c9092009-01-13 02:11:23 +0000996
Antoine Pitrou1a67bee2013-09-30 21:35:44 +0200997 When successfully queued, *func* will be *eventually* called from the
998 main interpreter thread with the argument *arg*. It will be called
999 asynchronously with respect to normally running Python code, but with
1000 both these conditions met:
Benjamin Petersona54c9092009-01-13 02:11:23 +00001001
Antoine Pitrou1a67bee2013-09-30 21:35:44 +02001002 * on a :term:`bytecode` boundary;
1003 * with the main thread holding the :term:`global interpreter lock`
1004 (*func* can therefore use the full C API).
1005
1006 *func* must return 0 on success, or -1 on failure with an exception
1007 set. *func* won't be interrupted to perform another asynchronous
1008 notification recursively, but it can still be interrupted to switch
1009 threads if the global interpreter lock is released.
1010
1011 This function doesn't need a current thread state to run, and it doesn't
1012 need the global interpreter lock.
1013
1014 .. warning::
1015 This is a low-level function, only useful for very special cases.
1016 There is no guarantee that *func* will be called as quick as
1017 possible. If the main thread is busy executing a system call,
1018 *func* won't be called before the system call returns. This
1019 function is generally **not** suitable for calling Python code from
1020 arbitrary C threads. Instead, use the :ref:`PyGILState API<gilstate>`.
Benjamin Petersona54c9092009-01-13 02:11:23 +00001021
Georg Brandl705d9d52009-05-05 09:29:50 +00001022 .. versionadded:: 3.1
Benjamin Petersona54c9092009-01-13 02:11:23 +00001023
Georg Brandl116aa622007-08-15 14:28:22 +00001024.. _profiling:
1025
1026Profiling and Tracing
1027=====================
1028
1029.. sectionauthor:: Fred L. Drake, Jr. <fdrake@acm.org>
1030
1031
1032The Python interpreter provides some low-level support for attaching profiling
1033and execution tracing facilities. These are used for profiling, debugging, and
1034coverage analysis tools.
1035
Georg Brandle6bcc912008-05-12 18:05:20 +00001036This C interface allows the profiling or tracing code to avoid the overhead of
1037calling through Python-level callable objects, making a direct C function call
1038instead. The essential attributes of the facility have not changed; the
1039interface allows trace functions to be installed per-thread, and the basic
1040events reported to the trace function are the same as had been reported to the
1041Python-level trace functions in previous versions.
Georg Brandl116aa622007-08-15 14:28:22 +00001042
1043
Georg Brandl60203b42010-10-06 10:11:56 +00001044.. c:type:: int (*Py_tracefunc)(PyObject *obj, PyFrameObject *frame, int what, PyObject *arg)
Georg Brandl116aa622007-08-15 14:28:22 +00001045
Georg Brandl60203b42010-10-06 10:11:56 +00001046 The type of the trace function registered using :c:func:`PyEval_SetProfile` and
1047 :c:func:`PyEval_SetTrace`. The first parameter is the object passed to the
Georg Brandl116aa622007-08-15 14:28:22 +00001048 registration function as *obj*, *frame* is the frame object to which the event
1049 pertains, *what* is one of the constants :const:`PyTrace_CALL`,
1050 :const:`PyTrace_EXCEPTION`, :const:`PyTrace_LINE`, :const:`PyTrace_RETURN`,
1051 :const:`PyTrace_C_CALL`, :const:`PyTrace_C_EXCEPTION`, or
1052 :const:`PyTrace_C_RETURN`, and *arg* depends on the value of *what*:
1053
1054 +------------------------------+--------------------------------------+
1055 | Value of *what* | Meaning of *arg* |
1056 +==============================+======================================+
1057 | :const:`PyTrace_CALL` | Always *NULL*. |
1058 +------------------------------+--------------------------------------+
1059 | :const:`PyTrace_EXCEPTION` | Exception information as returned by |
1060 | | :func:`sys.exc_info`. |
1061 +------------------------------+--------------------------------------+
1062 | :const:`PyTrace_LINE` | Always *NULL*. |
1063 +------------------------------+--------------------------------------+
Georg Brandld0b0e1d2010-10-15 16:42:37 +00001064 | :const:`PyTrace_RETURN` | Value being returned to the caller, |
1065 | | or *NULL* if caused by an exception. |
Georg Brandl116aa622007-08-15 14:28:22 +00001066 +------------------------------+--------------------------------------+
Georg Brandld0b0e1d2010-10-15 16:42:37 +00001067 | :const:`PyTrace_C_CALL` | Function object being called. |
Georg Brandl116aa622007-08-15 14:28:22 +00001068 +------------------------------+--------------------------------------+
Georg Brandld0b0e1d2010-10-15 16:42:37 +00001069 | :const:`PyTrace_C_EXCEPTION` | Function object being called. |
Georg Brandl116aa622007-08-15 14:28:22 +00001070 +------------------------------+--------------------------------------+
Georg Brandld0b0e1d2010-10-15 16:42:37 +00001071 | :const:`PyTrace_C_RETURN` | Function object being called. |
Georg Brandl116aa622007-08-15 14:28:22 +00001072 +------------------------------+--------------------------------------+
1073
1074
Georg Brandl60203b42010-10-06 10:11:56 +00001075.. c:var:: int PyTrace_CALL
Georg Brandl116aa622007-08-15 14:28:22 +00001076
Georg Brandl60203b42010-10-06 10:11:56 +00001077 The value of the *what* parameter to a :c:type:`Py_tracefunc` function when a new
Georg Brandl116aa622007-08-15 14:28:22 +00001078 call to a function or method is being reported, or a new entry into a generator.
1079 Note that the creation of the iterator for a generator function is not reported
1080 as there is no control transfer to the Python bytecode in the corresponding
1081 frame.
1082
1083
Georg Brandl60203b42010-10-06 10:11:56 +00001084.. c:var:: int PyTrace_EXCEPTION
Georg Brandl116aa622007-08-15 14:28:22 +00001085
Georg Brandl60203b42010-10-06 10:11:56 +00001086 The value of the *what* parameter to a :c:type:`Py_tracefunc` function when an
Georg Brandl116aa622007-08-15 14:28:22 +00001087 exception has been raised. The callback function is called with this value for
1088 *what* when after any bytecode is processed after which the exception becomes
1089 set within the frame being executed. The effect of this is that as exception
1090 propagation causes the Python stack to unwind, the callback is called upon
1091 return to each frame as the exception propagates. Only trace functions receives
1092 these events; they are not needed by the profiler.
1093
1094
Georg Brandl60203b42010-10-06 10:11:56 +00001095.. c:var:: int PyTrace_LINE
Georg Brandl116aa622007-08-15 14:28:22 +00001096
1097 The value passed as the *what* parameter to a trace function (but not a
1098 profiling function) when a line-number event is being reported.
1099
1100
Georg Brandl60203b42010-10-06 10:11:56 +00001101.. c:var:: int PyTrace_RETURN
Georg Brandl116aa622007-08-15 14:28:22 +00001102
Georg Brandl60203b42010-10-06 10:11:56 +00001103 The value for the *what* parameter to :c:type:`Py_tracefunc` functions when a
Georg Brandl116aa622007-08-15 14:28:22 +00001104 call is returning without propagating an exception.
1105
1106
Georg Brandl60203b42010-10-06 10:11:56 +00001107.. c:var:: int PyTrace_C_CALL
Georg Brandl116aa622007-08-15 14:28:22 +00001108
Georg Brandl60203b42010-10-06 10:11:56 +00001109 The value for the *what* parameter to :c:type:`Py_tracefunc` functions when a C
Georg Brandl116aa622007-08-15 14:28:22 +00001110 function is about to be called.
1111
1112
Georg Brandl60203b42010-10-06 10:11:56 +00001113.. c:var:: int PyTrace_C_EXCEPTION
Georg Brandl116aa622007-08-15 14:28:22 +00001114
Georg Brandl60203b42010-10-06 10:11:56 +00001115 The value for the *what* parameter to :c:type:`Py_tracefunc` functions when a C
Georg Brandl7cb13192010-08-03 12:06:29 +00001116 function has raised an exception.
Georg Brandl116aa622007-08-15 14:28:22 +00001117
1118
Georg Brandl60203b42010-10-06 10:11:56 +00001119.. c:var:: int PyTrace_C_RETURN
Georg Brandl116aa622007-08-15 14:28:22 +00001120
Georg Brandl60203b42010-10-06 10:11:56 +00001121 The value for the *what* parameter to :c:type:`Py_tracefunc` functions when a C
Georg Brandl116aa622007-08-15 14:28:22 +00001122 function has returned.
1123
1124
Georg Brandl60203b42010-10-06 10:11:56 +00001125.. c:function:: void PyEval_SetProfile(Py_tracefunc func, PyObject *obj)
Georg Brandl116aa622007-08-15 14:28:22 +00001126
1127 Set the profiler function to *func*. The *obj* parameter is passed to the
1128 function as its first parameter, and may be any Python object, or *NULL*. If
1129 the profile function needs to maintain state, using a different value for *obj*
1130 for each thread provides a convenient and thread-safe place to store it. The
1131 profile function is called for all monitored events except the line-number
1132 events.
1133
1134
Georg Brandl60203b42010-10-06 10:11:56 +00001135.. c:function:: void PyEval_SetTrace(Py_tracefunc func, PyObject *obj)
Georg Brandl116aa622007-08-15 14:28:22 +00001136
1137 Set the tracing function to *func*. This is similar to
Georg Brandl60203b42010-10-06 10:11:56 +00001138 :c:func:`PyEval_SetProfile`, except the tracing function does receive line-number
Georg Brandl116aa622007-08-15 14:28:22 +00001139 events.
1140
Georg Brandl60203b42010-10-06 10:11:56 +00001141.. c:function:: PyObject* PyEval_GetCallStats(PyObject *self)
Christian Heimesd8654cf2007-12-02 15:22:16 +00001142
1143 Return a tuple of function call counts. There are constants defined for the
1144 positions within the tuple:
Georg Brandl48310cd2009-01-03 21:18:54 +00001145
Christian Heimesd8654cf2007-12-02 15:22:16 +00001146 +-------------------------------+-------+
1147 | Name | Value |
1148 +===============================+=======+
1149 | :const:`PCALL_ALL` | 0 |
1150 +-------------------------------+-------+
1151 | :const:`PCALL_FUNCTION` | 1 |
1152 +-------------------------------+-------+
1153 | :const:`PCALL_FAST_FUNCTION` | 2 |
1154 +-------------------------------+-------+
1155 | :const:`PCALL_FASTER_FUNCTION`| 3 |
1156 +-------------------------------+-------+
1157 | :const:`PCALL_METHOD` | 4 |
1158 +-------------------------------+-------+
1159 | :const:`PCALL_BOUND_METHOD` | 5 |
1160 +-------------------------------+-------+
1161 | :const:`PCALL_CFUNCTION` | 6 |
1162 +-------------------------------+-------+
1163 | :const:`PCALL_TYPE` | 7 |
1164 +-------------------------------+-------+
1165 | :const:`PCALL_GENERATOR` | 8 |
1166 +-------------------------------+-------+
1167 | :const:`PCALL_OTHER` | 9 |
1168 +-------------------------------+-------+
1169 | :const:`PCALL_POP` | 10 |
1170 +-------------------------------+-------+
Georg Brandl48310cd2009-01-03 21:18:54 +00001171
Christian Heimesd8654cf2007-12-02 15:22:16 +00001172 :const:`PCALL_FAST_FUNCTION` means no argument tuple needs to be created.
1173 :const:`PCALL_FASTER_FUNCTION` means that the fast-path frame setup code is used.
1174
1175 If there is a method call where the call can be optimized by changing
1176 the argument tuple and calling the function directly, it gets recorded
1177 twice.
1178
1179 This function is only present if Python is compiled with :const:`CALL_PROFILE`
1180 defined.
Georg Brandl116aa622007-08-15 14:28:22 +00001181
1182.. _advanced-debugging:
1183
1184Advanced Debugger Support
1185=========================
1186
1187.. sectionauthor:: Fred L. Drake, Jr. <fdrake@acm.org>
1188
1189
1190These functions are only intended to be used by advanced debugging tools.
1191
1192
Georg Brandl60203b42010-10-06 10:11:56 +00001193.. c:function:: PyInterpreterState* PyInterpreterState_Head()
Georg Brandl116aa622007-08-15 14:28:22 +00001194
1195 Return the interpreter state object at the head of the list of all such objects.
1196
Georg Brandl116aa622007-08-15 14:28:22 +00001197
Georg Brandl60203b42010-10-06 10:11:56 +00001198.. c:function:: PyInterpreterState* PyInterpreterState_Next(PyInterpreterState *interp)
Georg Brandl116aa622007-08-15 14:28:22 +00001199
1200 Return the next interpreter state object after *interp* from the list of all
1201 such objects.
1202
Georg Brandl116aa622007-08-15 14:28:22 +00001203
Georg Brandl60203b42010-10-06 10:11:56 +00001204.. c:function:: PyThreadState * PyInterpreterState_ThreadHead(PyInterpreterState *interp)
Georg Brandl116aa622007-08-15 14:28:22 +00001205
Benjamin Peterson82f34ad2015-01-13 09:17:24 -05001206 Return the pointer to the first :c:type:`PyThreadState` object in the list of
Georg Brandl116aa622007-08-15 14:28:22 +00001207 threads associated with the interpreter *interp*.
1208
Georg Brandl116aa622007-08-15 14:28:22 +00001209
Georg Brandl60203b42010-10-06 10:11:56 +00001210.. c:function:: PyThreadState* PyThreadState_Next(PyThreadState *tstate)
Georg Brandl116aa622007-08-15 14:28:22 +00001211
1212 Return the next thread state object after *tstate* from the list of all such
Georg Brandl60203b42010-10-06 10:11:56 +00001213 objects belonging to the same :c:type:`PyInterpreterState` object.
Georg Brandl116aa622007-08-15 14:28:22 +00001214