blob: 1a54321710951b38aa1df34828b32c89019030db [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
40
Georg Brandl60203b42010-10-06 10:11:56 +000041.. c:function:: void Py_InitializeEx(int initsigs)
Georg Brandl116aa622007-08-15 14:28:22 +000042
Georg Brandl60203b42010-10-06 10:11:56 +000043 This function works like :c:func:`Py_Initialize` if *initsigs* is 1. If
Georg Brandl116aa622007-08-15 14:28:22 +000044 *initsigs* is 0, it skips initialization registration of signal handlers, which
45 might be useful when Python is embedded.
46
Georg Brandl116aa622007-08-15 14:28:22 +000047
Georg Brandl60203b42010-10-06 10:11:56 +000048.. c:function:: int Py_IsInitialized()
Georg Brandl116aa622007-08-15 14:28:22 +000049
50 Return true (nonzero) when the Python interpreter has been initialized, false
Georg Brandl60203b42010-10-06 10:11:56 +000051 (zero) if not. After :c:func:`Py_Finalize` is called, this returns false until
52 :c:func:`Py_Initialize` is called again.
Georg Brandl116aa622007-08-15 14:28:22 +000053
54
Georg Brandl60203b42010-10-06 10:11:56 +000055.. c:function:: void Py_Finalize()
Georg Brandl116aa622007-08-15 14:28:22 +000056
Georg Brandl60203b42010-10-06 10:11:56 +000057 Undo all initializations made by :c:func:`Py_Initialize` and subsequent use of
Georg Brandl116aa622007-08-15 14:28:22 +000058 Python/C API functions, and destroy all sub-interpreters (see
Georg Brandl60203b42010-10-06 10:11:56 +000059 :c:func:`Py_NewInterpreter` below) that were created and not yet destroyed since
60 the last call to :c:func:`Py_Initialize`. Ideally, this frees all memory
Georg Brandl116aa622007-08-15 14:28:22 +000061 allocated by the Python interpreter. This is a no-op when called for a second
Georg Brandl60203b42010-10-06 10:11:56 +000062 time (without calling :c:func:`Py_Initialize` again first). There is no return
Georg Brandl116aa622007-08-15 14:28:22 +000063 value; errors during finalization are ignored.
64
65 This function is provided for a number of reasons. An embedding application
66 might want to restart Python without having to restart the application itself.
67 An application that has loaded the Python interpreter from a dynamically
68 loadable library (or DLL) might want to free all memory allocated by Python
69 before unloading the DLL. During a hunt for memory leaks in an application a
70 developer might want to free all memory allocated by Python before exiting from
71 the application.
72
73 **Bugs and caveats:** The destruction of modules and objects in modules is done
74 in random order; this may cause destructors (:meth:`__del__` methods) to fail
75 when they depend on other objects (even functions) or modules. Dynamically
76 loaded extension modules loaded by Python are not unloaded. Small amounts of
77 memory allocated by the Python interpreter may not be freed (if you find a leak,
78 please report it). Memory tied up in circular references between objects is not
79 freed. Some memory allocated by extension modules may not be freed. Some
80 extensions may not work properly if their initialization routine is called more
Georg Brandl60203b42010-10-06 10:11:56 +000081 than once; this can happen if an application calls :c:func:`Py_Initialize` and
82 :c:func:`Py_Finalize` more than once.
Georg Brandl116aa622007-08-15 14:28:22 +000083
84
Antoine Pitrou8b50b832011-01-15 11:57:42 +000085Process-wide parameters
86=======================
Georg Brandl116aa622007-08-15 14:28:22 +000087
88
Nick Coghlan7d270ee2013-10-17 22:35:35 +100089.. c:function:: int Py_SetStandardStreamEncoding(char *encoding, char *errors)
90
91 .. index::
92 single: Py_Initialize()
93 single: main()
94 triple: stdin; stdout; sdterr
95
96 This function should be called before :c:func:`Py_Initialize`. It
97 specifies which encoding and error handling to use with standard io,
98 with the same meanings as in :func:`str.encode`.
99
100 It overrides :envvar:`PYTHONIOENCODING` values, and allows embedding code
101 to control io encoding when the environment variable does not work.
102
103 ``encoding`` and/or ``errors`` may be NULL to use
104 :envvar:`PYTHONIOENCODING` and/or default values (depending on other
105 settings).
106
107 Note that :data:`sys.stderr` always uses the "backslashreplace" error
108 handler, regardless of this (or any other) setting.
109
110 If :c:func:`Py_Finalize` is called, this function will need to be called
111 again in order to affect subsequent calls to :c:func:`Py_Initialize`.
112
113 Returns 0 if successful.
114
115
Georg Brandl60203b42010-10-06 10:11:56 +0000116.. c:function:: void Py_SetProgramName(wchar_t *name)
Georg Brandl116aa622007-08-15 14:28:22 +0000117
118 .. index::
119 single: Py_Initialize()
120 single: main()
121 single: Py_GetPath()
122
Georg Brandl60203b42010-10-06 10:11:56 +0000123 This function should be called before :c:func:`Py_Initialize` is called for
Georg Brandl116aa622007-08-15 14:28:22 +0000124 the first time, if it is called at all. It tells the interpreter the value
Georg Brandl60203b42010-10-06 10:11:56 +0000125 of the ``argv[0]`` argument to the :c:func:`main` function of the program
Martin v. Löwis790465f2008-04-05 20:41:37 +0000126 (converted to wide characters).
Georg Brandl60203b42010-10-06 10:11:56 +0000127 This is used by :c:func:`Py_GetPath` and some other functions below to find
Georg Brandl116aa622007-08-15 14:28:22 +0000128 the Python run-time libraries relative to the interpreter executable. The
129 default value is ``'python'``. The argument should point to a
Martin v. Löwis790465f2008-04-05 20:41:37 +0000130 zero-terminated wide character string in static storage whose contents will not
Georg Brandl116aa622007-08-15 14:28:22 +0000131 change for the duration of the program's execution. No code in the Python
132 interpreter will change the contents of this storage.
133
134
Georg Brandl60203b42010-10-06 10:11:56 +0000135.. c:function:: wchar* Py_GetProgramName()
Georg Brandl116aa622007-08-15 14:28:22 +0000136
137 .. index:: single: Py_SetProgramName()
138
Georg Brandl60203b42010-10-06 10:11:56 +0000139 Return the program name set with :c:func:`Py_SetProgramName`, or the default.
Georg Brandl116aa622007-08-15 14:28:22 +0000140 The returned string points into static storage; the caller should not modify its
141 value.
142
143
Georg Brandl60203b42010-10-06 10:11:56 +0000144.. c:function:: wchar_t* Py_GetPrefix()
Georg Brandl116aa622007-08-15 14:28:22 +0000145
146 Return the *prefix* for installed platform-independent files. This is derived
147 through a number of complicated rules from the program name set with
Georg Brandl60203b42010-10-06 10:11:56 +0000148 :c:func:`Py_SetProgramName` and some environment variables; for example, if the
Georg Brandl116aa622007-08-15 14:28:22 +0000149 program name is ``'/usr/local/bin/python'``, the prefix is ``'/usr/local'``. The
150 returned string points into static storage; the caller should not modify its
151 value. This corresponds to the :makevar:`prefix` variable in the top-level
Éric Araujo37b5f9e2011-09-01 03:19:30 +0200152 :file:`Makefile` and the ``--prefix`` argument to the :program:`configure`
Georg Brandl116aa622007-08-15 14:28:22 +0000153 script at build time. The value is available to Python code as ``sys.prefix``.
154 It is only useful on Unix. See also the next function.
155
156
Georg Brandl60203b42010-10-06 10:11:56 +0000157.. c:function:: wchar_t* Py_GetExecPrefix()
Georg Brandl116aa622007-08-15 14:28:22 +0000158
159 Return the *exec-prefix* for installed platform-*dependent* files. This is
160 derived through a number of complicated rules from the program name set with
Georg Brandl60203b42010-10-06 10:11:56 +0000161 :c:func:`Py_SetProgramName` and some environment variables; for example, if the
Georg Brandl116aa622007-08-15 14:28:22 +0000162 program name is ``'/usr/local/bin/python'``, the exec-prefix is
163 ``'/usr/local'``. The returned string points into static storage; the caller
164 should not modify its value. This corresponds to the :makevar:`exec_prefix`
Éric Araujo37b5f9e2011-09-01 03:19:30 +0200165 variable in the top-level :file:`Makefile` and the ``--exec-prefix``
Georg Brandl116aa622007-08-15 14:28:22 +0000166 argument to the :program:`configure` script at build time. The value is
167 available to Python code as ``sys.exec_prefix``. It is only useful on Unix.
168
169 Background: The exec-prefix differs from the prefix when platform dependent
170 files (such as executables and shared libraries) are installed in a different
171 directory tree. In a typical installation, platform dependent files may be
172 installed in the :file:`/usr/local/plat` subtree while platform independent may
173 be installed in :file:`/usr/local`.
174
175 Generally speaking, a platform is a combination of hardware and software
176 families, e.g. Sparc machines running the Solaris 2.x operating system are
177 considered the same platform, but Intel machines running Solaris 2.x are another
178 platform, and Intel machines running Linux are yet another platform. Different
179 major revisions of the same operating system generally also form different
180 platforms. Non-Unix operating systems are a different story; the installation
181 strategies on those systems are so different that the prefix and exec-prefix are
182 meaningless, and set to the empty string. Note that compiled Python bytecode
183 files are platform independent (but not independent from the Python version by
184 which they were compiled!).
185
186 System administrators will know how to configure the :program:`mount` or
187 :program:`automount` programs to share :file:`/usr/local` between platforms
188 while having :file:`/usr/local/plat` be a different filesystem for each
189 platform.
190
191
Georg Brandl60203b42010-10-06 10:11:56 +0000192.. c:function:: wchar_t* Py_GetProgramFullPath()
Georg Brandl116aa622007-08-15 14:28:22 +0000193
194 .. index::
195 single: Py_SetProgramName()
196 single: executable (in module sys)
197
198 Return the full program name of the Python executable; this is computed as a
199 side-effect of deriving the default module search path from the program name
Georg Brandl60203b42010-10-06 10:11:56 +0000200 (set by :c:func:`Py_SetProgramName` above). The returned string points into
Georg Brandl116aa622007-08-15 14:28:22 +0000201 static storage; the caller should not modify its value. The value is available
202 to Python code as ``sys.executable``.
203
204
Georg Brandl60203b42010-10-06 10:11:56 +0000205.. c:function:: wchar_t* Py_GetPath()
Georg Brandl116aa622007-08-15 14:28:22 +0000206
207 .. index::
208 triple: module; search; path
209 single: path (in module sys)
Kristján Valur Jónsson3b69db22010-09-27 05:32:54 +0000210 single: Py_SetPath()
Georg Brandl116aa622007-08-15 14:28:22 +0000211
Benjamin Peterson46a99002010-01-09 18:45:30 +0000212 Return the default module search path; this is computed from the program name
Georg Brandl60203b42010-10-06 10:11:56 +0000213 (set by :c:func:`Py_SetProgramName` above) and some environment variables.
Benjamin Peterson46a99002010-01-09 18:45:30 +0000214 The returned string consists of a series of directory names separated by a
215 platform dependent delimiter character. The delimiter character is ``':'``
216 on Unix and Mac OS X, ``';'`` on Windows. The returned string points into
217 static storage; the caller should not modify its value. The list
218 :data:`sys.path` is initialized with this value on interpreter startup; it
219 can be (and usually is) modified later to change the search path for loading
220 modules.
Georg Brandl116aa622007-08-15 14:28:22 +0000221
Christian Heimes5b5e81c2007-12-31 16:14:33 +0000222 .. XXX should give the exact rules
Georg Brandl116aa622007-08-15 14:28:22 +0000223
224
Georg Brandl60203b42010-10-06 10:11:56 +0000225.. c:function:: void Py_SetPath(const wchar_t *)
Kristján Valur Jónsson3b69db22010-09-27 05:32:54 +0000226
227 .. index::
228 triple: module; search; path
229 single: path (in module sys)
230 single: Py_GetPath()
231
232 Set the default module search path. If this function is called before
Georg Brandlfa4f7f92010-10-06 10:14:08 +0000233 :c:func:`Py_Initialize`, then :c:func:`Py_GetPath` won't attempt to compute a
234 default search path but uses the one provided instead. This is useful if
235 Python is embedded by an application that has full knowledge of the location
236 of all modules. The path components should be separated by semicolons.
Kristján Valur Jónsson3b69db22010-09-27 05:32:54 +0000237
Georg Brandlfa4f7f92010-10-06 10:14:08 +0000238 This also causes :data:`sys.executable` to be set only to the raw program
239 name (see :c:func:`Py_SetProgramName`) and for :data:`sys.prefix` and
240 :data:`sys.exec_prefix` to be empty. It is up to the caller to modify these
241 if required after calling :c:func:`Py_Initialize`.
242
Kristján Valur Jónsson3b69db22010-09-27 05:32:54 +0000243
Georg Brandl60203b42010-10-06 10:11:56 +0000244.. c:function:: const char* Py_GetVersion()
Georg Brandl116aa622007-08-15 14:28:22 +0000245
246 Return the version of this Python interpreter. This is a string that looks
247 something like ::
248
Georg Brandle6bcc912008-05-12 18:05:20 +0000249 "3.0a5+ (py3k:63103M, May 12 2008, 00:53:55) \n[GCC 4.2.3]"
Georg Brandl116aa622007-08-15 14:28:22 +0000250
251 .. index:: single: version (in module sys)
252
253 The first word (up to the first space character) is the current Python version;
254 the first three characters are the major and minor version separated by a
255 period. The returned string points into static storage; the caller should not
Georg Brandle6bcc912008-05-12 18:05:20 +0000256 modify its value. The value is available to Python code as :data:`sys.version`.
Georg Brandl116aa622007-08-15 14:28:22 +0000257
258
Georg Brandl60203b42010-10-06 10:11:56 +0000259.. c:function:: const char* Py_GetPlatform()
Georg Brandl116aa622007-08-15 14:28:22 +0000260
261 .. index:: single: platform (in module sys)
262
263 Return the platform identifier for the current platform. On Unix, this is
264 formed from the "official" name of the operating system, converted to lower
265 case, followed by the major revision number; e.g., for Solaris 2.x, which is
266 also known as SunOS 5.x, the value is ``'sunos5'``. On Mac OS X, it is
267 ``'darwin'``. On Windows, it is ``'win'``. The returned string points into
268 static storage; the caller should not modify its value. The value is available
269 to Python code as ``sys.platform``.
270
271
Georg Brandl60203b42010-10-06 10:11:56 +0000272.. c:function:: const char* Py_GetCopyright()
Georg Brandl116aa622007-08-15 14:28:22 +0000273
274 Return the official copyright string for the current Python version, for example
275
276 ``'Copyright 1991-1995 Stichting Mathematisch Centrum, Amsterdam'``
277
278 .. index:: single: copyright (in module sys)
279
280 The returned string points into static storage; the caller should not modify its
281 value. The value is available to Python code as ``sys.copyright``.
282
283
Georg Brandl60203b42010-10-06 10:11:56 +0000284.. c:function:: const char* Py_GetCompiler()
Georg Brandl116aa622007-08-15 14:28:22 +0000285
286 Return an indication of the compiler used to build the current Python version,
287 in square brackets, for example::
288
289 "[GCC 2.7.2.2]"
290
291 .. index:: single: version (in module sys)
292
293 The returned string points into static storage; the caller should not modify its
294 value. The value is available to Python code as part of the variable
295 ``sys.version``.
296
297
Georg Brandl60203b42010-10-06 10:11:56 +0000298.. c:function:: const char* Py_GetBuildInfo()
Georg Brandl116aa622007-08-15 14:28:22 +0000299
300 Return information about the sequence number and build date and time of the
301 current Python interpreter instance, for example ::
302
303 "#67, Aug 1 1997, 22:34:28"
304
305 .. index:: single: version (in module sys)
306
307 The returned string points into static storage; the caller should not modify its
308 value. The value is available to Python code as part of the variable
309 ``sys.version``.
310
311
Georg Brandl60203b42010-10-06 10:11:56 +0000312.. c:function:: void PySys_SetArgvEx(int argc, wchar_t **argv, int updatepath)
Georg Brandl116aa622007-08-15 14:28:22 +0000313
314 .. index::
315 single: main()
316 single: Py_FatalError()
317 single: argv (in module sys)
318
Benjamin Peterson5c6d7872009-02-06 02:40:07 +0000319 Set :data:`sys.argv` based on *argc* and *argv*. These parameters are
Georg Brandl60203b42010-10-06 10:11:56 +0000320 similar to those passed to the program's :c:func:`main` function with the
Benjamin Peterson5c6d7872009-02-06 02:40:07 +0000321 difference that the first entry should refer to the script file to be
322 executed rather than the executable hosting the Python interpreter. If there
323 isn't a script that will be run, the first entry in *argv* can be an empty
324 string. If this function fails to initialize :data:`sys.argv`, a fatal
Georg Brandl60203b42010-10-06 10:11:56 +0000325 condition is signalled using :c:func:`Py_FatalError`.
Benjamin Peterson5c6d7872009-02-06 02:40:07 +0000326
Antoine Pitrouf978fac2010-05-21 17:25:34 +0000327 If *updatepath* is zero, this is all the function does. If *updatepath*
328 is non-zero, the function also modifies :data:`sys.path` according to the
329 following algorithm:
330
331 - If the name of an existing script is passed in ``argv[0]``, the absolute
332 path of the directory where the script is located is prepended to
333 :data:`sys.path`.
334 - Otherwise (that is, if *argc* is 0 or ``argv[0]`` doesn't point
335 to an existing file name), an empty string is prepended to
336 :data:`sys.path`, which is the same as prepending the current working
337 directory (``"."``).
338
339 .. note::
340 It is recommended that applications embedding the Python interpreter
341 for purposes other than executing a single script pass 0 as *updatepath*,
342 and update :data:`sys.path` themselves if desired.
343 See `CVE-2008-5983 <http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2008-5983>`_.
344
345 On versions before 3.1.3, you can achieve the same effect by manually
346 popping the first :data:`sys.path` element after having called
Georg Brandl60203b42010-10-06 10:11:56 +0000347 :c:func:`PySys_SetArgv`, for example using::
Antoine Pitrouf978fac2010-05-21 17:25:34 +0000348
349 PyRun_SimpleString("import sys; sys.path.pop(0)\n");
350
351 .. versionadded:: 3.1.3
Georg Brandl116aa622007-08-15 14:28:22 +0000352
Christian Heimes5b5e81c2007-12-31 16:14:33 +0000353 .. XXX impl. doesn't seem consistent in allowing 0/NULL for the params;
354 check w/ Guido.
Georg Brandl116aa622007-08-15 14:28:22 +0000355
Georg Brandl116aa622007-08-15 14:28:22 +0000356
Georg Brandl60203b42010-10-06 10:11:56 +0000357.. c:function:: void PySys_SetArgv(int argc, wchar_t **argv)
Antoine Pitrouf978fac2010-05-21 17:25:34 +0000358
Christian Heimesad73a9c2013-08-10 16:36:18 +0200359 This function works like :c:func:`PySys_SetArgvEx` with *updatepath* set
360 to 1 unless the :program:`python` interpreter was started with the
361 :option:`-I`.
362
363 .. versionchanged:: 3.4 The *updatepath* value depends on :option:`-I`.
Antoine Pitrouf978fac2010-05-21 17:25:34 +0000364
365
Georg Brandl60203b42010-10-06 10:11:56 +0000366.. c:function:: void Py_SetPythonHome(wchar_t *home)
Benjamin Peterson5c6d7872009-02-06 02:40:07 +0000367
368 Set the default "home" directory, that is, the location of the standard
Georg Brandlde0ab5e2010-12-02 18:02:01 +0000369 Python libraries. See :envvar:`PYTHONHOME` for the meaning of the
370 argument string.
371
Benjamin Peterson4ac9ce42009-10-04 14:49:41 +0000372 The argument should point to a zero-terminated character string in static
373 storage whose contents will not change for the duration of the program's
374 execution. No code in the Python interpreter will change the contents of
375 this storage.
Benjamin Peterson5c6d7872009-02-06 02:40:07 +0000376
377
Georg Brandl60203b42010-10-06 10:11:56 +0000378.. c:function:: w_char* Py_GetPythonHome()
Benjamin Peterson5c6d7872009-02-06 02:40:07 +0000379
380 Return the default "home", that is, the value set by a previous call to
Georg Brandl60203b42010-10-06 10:11:56 +0000381 :c:func:`Py_SetPythonHome`, or the value of the :envvar:`PYTHONHOME`
Benjamin Peterson5c6d7872009-02-06 02:40:07 +0000382 environment variable if it is set.
383
384
Georg Brandl116aa622007-08-15 14:28:22 +0000385.. _threads:
386
387Thread State and the Global Interpreter Lock
388============================================
389
390.. index::
391 single: global interpreter lock
392 single: interpreter lock
393 single: lock, interpreter
394
Georg Brandlf285bcc2010-10-19 21:07:16 +0000395The Python interpreter is not fully thread-safe. In order to support
Antoine Pitroubedd2c22011-01-15 12:54:19 +0000396multi-threaded Python programs, there's a global lock, called the :term:`global
397interpreter lock` or :term:`GIL`, that must be held by the current thread before
Benjamin Petersonef3e4c22009-04-11 19:48:14 +0000398it can safely access Python objects. Without the lock, even the simplest
399operations could cause problems in a multi-threaded program: for example, when
400two threads simultaneously increment the reference count of the same object, the
401reference count could end up being incremented only once instead of twice.
Georg Brandl116aa622007-08-15 14:28:22 +0000402
Antoine Pitroubedd2c22011-01-15 12:54:19 +0000403.. index:: single: setswitchinterval() (in module sys)
Georg Brandl116aa622007-08-15 14:28:22 +0000404
Antoine Pitroubedd2c22011-01-15 12:54:19 +0000405Therefore, the rule exists that only the thread that has acquired the
406:term:`GIL` may operate on Python objects or call Python/C API functions.
407In order to emulate concurrency of execution, the interpreter regularly
408tries to switch threads (see :func:`sys.setswitchinterval`). The lock is also
409released around potentially blocking I/O operations like reading or writing
410a file, so that other Python threads can run in the meantime.
Georg Brandl116aa622007-08-15 14:28:22 +0000411
412.. index::
413 single: PyThreadState
414 single: PyThreadState
415
Antoine Pitroubedd2c22011-01-15 12:54:19 +0000416The Python interpreter keeps some thread-specific bookkeeping information
417inside a data structure called :c:type:`PyThreadState`. There's also one
418global variable pointing to the current :c:type:`PyThreadState`: it can
419be retrieved using :c:func:`PyThreadState_Get`.
Georg Brandl116aa622007-08-15 14:28:22 +0000420
Antoine Pitroubedd2c22011-01-15 12:54:19 +0000421Releasing the GIL from extension code
422-------------------------------------
423
424Most extension code manipulating the :term:`GIL` has the following simple
425structure::
Georg Brandl116aa622007-08-15 14:28:22 +0000426
427 Save the thread state in a local variable.
Benjamin Petersonef3e4c22009-04-11 19:48:14 +0000428 Release the global interpreter lock.
Antoine Pitroubedd2c22011-01-15 12:54:19 +0000429 ... Do some blocking I/O operation ...
Benjamin Petersonef3e4c22009-04-11 19:48:14 +0000430 Reacquire the global interpreter lock.
Georg Brandl116aa622007-08-15 14:28:22 +0000431 Restore the thread state from the local variable.
432
433This is so common that a pair of macros exists to simplify it::
434
435 Py_BEGIN_ALLOW_THREADS
Antoine Pitroubedd2c22011-01-15 12:54:19 +0000436 ... Do some blocking I/O operation ...
Georg Brandl116aa622007-08-15 14:28:22 +0000437 Py_END_ALLOW_THREADS
438
439.. index::
440 single: Py_BEGIN_ALLOW_THREADS
441 single: Py_END_ALLOW_THREADS
442
Georg Brandl60203b42010-10-06 10:11:56 +0000443The :c:macro:`Py_BEGIN_ALLOW_THREADS` macro opens a new block and declares a
444hidden local variable; the :c:macro:`Py_END_ALLOW_THREADS` macro closes the
Antoine Pitroubedd2c22011-01-15 12:54:19 +0000445block. These two macros are still available when Python is compiled without
446thread support (they simply have an empty expansion).
Georg Brandl116aa622007-08-15 14:28:22 +0000447
448When thread support is enabled, the block above expands to the following code::
449
450 PyThreadState *_save;
451
452 _save = PyEval_SaveThread();
453 ...Do some blocking I/O operation...
454 PyEval_RestoreThread(_save);
455
Georg Brandl116aa622007-08-15 14:28:22 +0000456.. index::
457 single: PyEval_RestoreThread()
Georg Brandl116aa622007-08-15 14:28:22 +0000458 single: PyEval_SaveThread()
Georg Brandl116aa622007-08-15 14:28:22 +0000459
Antoine Pitroubedd2c22011-01-15 12:54:19 +0000460Here is how these functions work: the global interpreter lock is used to protect the pointer to the
461current thread state. When releasing the lock and saving the thread state,
462the current thread state pointer must be retrieved before the lock is released
463(since another thread could immediately acquire the lock and store its own thread
464state in the global variable). Conversely, when acquiring the lock and restoring
465the thread state, the lock must be acquired before storing the thread state
466pointer.
Georg Brandl116aa622007-08-15 14:28:22 +0000467
Antoine Pitroubedd2c22011-01-15 12:54:19 +0000468.. note::
469 Calling system I/O functions is the most common use case for releasing
470 the GIL, but it can also be useful before calling long-running computations
471 which don't need access to Python objects, such as compression or
472 cryptographic functions operating over memory buffers. For example, the
473 standard :mod:`zlib` and :mod:`hashlib` modules release the GIL when
474 compressing or hashing data.
Georg Brandl116aa622007-08-15 14:28:22 +0000475
Antoine Pitrou1a67bee2013-09-30 21:35:44 +0200476
477.. _gilstate:
478
Antoine Pitroubedd2c22011-01-15 12:54:19 +0000479Non-Python created threads
480--------------------------
Georg Brandl116aa622007-08-15 14:28:22 +0000481
Antoine Pitroubedd2c22011-01-15 12:54:19 +0000482When threads are created using the dedicated Python APIs (such as the
483:mod:`threading` module), a thread state is automatically associated to them
484and the code showed above is therefore correct. However, when threads are
485created from C (for example by a third-party library with its own thread
486management), they don't hold the GIL, nor is there a thread state structure
487for them.
488
489If you need to call Python code from these threads (often this will be part
490of a callback API provided by the aforementioned third-party library),
491you must first register these threads with the interpreter by
492creating a thread state data structure, then acquiring the GIL, and finally
493storing their thread state pointer, before you can start using the Python/C
494API. When you are done, you should reset the thread state pointer, release
495the GIL, and finally free the thread state data structure.
496
497The :c:func:`PyGILState_Ensure` and :c:func:`PyGILState_Release` functions do
498all of the above automatically. The typical idiom for calling into Python
499from a C thread is::
Georg Brandl116aa622007-08-15 14:28:22 +0000500
501 PyGILState_STATE gstate;
502 gstate = PyGILState_Ensure();
503
Antoine Pitroubedd2c22011-01-15 12:54:19 +0000504 /* Perform Python actions here. */
Georg Brandl116aa622007-08-15 14:28:22 +0000505 result = CallSomeFunction();
Antoine Pitroubedd2c22011-01-15 12:54:19 +0000506 /* evaluate result or handle exception */
Georg Brandl116aa622007-08-15 14:28:22 +0000507
508 /* Release the thread. No Python API allowed beyond this point. */
509 PyGILState_Release(gstate);
510
Georg Brandl60203b42010-10-06 10:11:56 +0000511Note that the :c:func:`PyGILState_\*` functions assume there is only one global
Antoine Pitroubedd2c22011-01-15 12:54:19 +0000512interpreter (created automatically by :c:func:`Py_Initialize`). Python
Georg Brandl116aa622007-08-15 14:28:22 +0000513supports the creation of additional interpreters (using
Georg Brandl60203b42010-10-06 10:11:56 +0000514:c:func:`Py_NewInterpreter`), but mixing multiple interpreters and the
515:c:func:`PyGILState_\*` API is unsupported.
Georg Brandl116aa622007-08-15 14:28:22 +0000516
Benjamin Peterson0df35a92009-10-04 20:32:25 +0000517Another important thing to note about threads is their behaviour in the face
Georg Brandl60203b42010-10-06 10:11:56 +0000518of the C :c:func:`fork` call. On most systems with :c:func:`fork`, after a
Benjamin Peterson0df35a92009-10-04 20:32:25 +0000519process forks only the thread that issued the fork will exist. That also
520means any locks held by other threads will never be released. Python solves
521this for :func:`os.fork` by acquiring the locks it uses internally before
522the fork, and releasing them afterwards. In addition, it resets any
523:ref:`lock-objects` in the child. When extending or embedding Python, there
524is no way to inform Python of additional (non-Python) locks that need to be
525acquired before or reset after a fork. OS facilities such as
Ezio Melotti861d27f2011-04-20 21:32:40 +0300526:c:func:`pthread_atfork` would need to be used to accomplish the same thing.
Georg Brandl60203b42010-10-06 10:11:56 +0000527Additionally, when extending or embedding Python, calling :c:func:`fork`
Benjamin Peterson0df35a92009-10-04 20:32:25 +0000528directly rather than through :func:`os.fork` (and returning to or calling
529into Python) may result in a deadlock by one of Python's internal locks
530being held by a thread that is defunct after the fork.
Georg Brandl60203b42010-10-06 10:11:56 +0000531:c:func:`PyOS_AfterFork` tries to reset the necessary locks, but is not
Benjamin Peterson0df35a92009-10-04 20:32:25 +0000532always able to.
Georg Brandl116aa622007-08-15 14:28:22 +0000533
Antoine Pitrou8b50b832011-01-15 11:57:42 +0000534
Antoine Pitroubedd2c22011-01-15 12:54:19 +0000535High-level API
536--------------
537
538These are the most commonly used types and functions when writing C extension
539code, or when embedding the Python interpreter:
540
Georg Brandl60203b42010-10-06 10:11:56 +0000541.. c:type:: PyInterpreterState
Georg Brandl116aa622007-08-15 14:28:22 +0000542
543 This data structure represents the state shared by a number of cooperating
544 threads. Threads belonging to the same interpreter share their module
545 administration and a few other internal items. There are no public members in
546 this structure.
547
548 Threads belonging to different interpreters initially share nothing, except
549 process state like available memory, open file descriptors and such. The global
550 interpreter lock is also shared by all threads, regardless of to which
551 interpreter they belong.
552
553
Georg Brandl60203b42010-10-06 10:11:56 +0000554.. c:type:: PyThreadState
Georg Brandl116aa622007-08-15 14:28:22 +0000555
556 This data structure represents the state of a single thread. The only public
Georg Brandl60203b42010-10-06 10:11:56 +0000557 data member is :c:type:`PyInterpreterState \*`:attr:`interp`, which points to
Georg Brandl116aa622007-08-15 14:28:22 +0000558 this thread's interpreter state.
559
560
Georg Brandl60203b42010-10-06 10:11:56 +0000561.. c:function:: void PyEval_InitThreads()
Georg Brandl116aa622007-08-15 14:28:22 +0000562
563 .. index::
Antoine Pitrouf5cf4352011-01-15 14:31:49 +0000564 single: PyEval_AcquireThread()
Georg Brandl116aa622007-08-15 14:28:22 +0000565 single: PyEval_ReleaseThread()
566 single: PyEval_SaveThread()
567 single: PyEval_RestoreThread()
568
569 Initialize and acquire the global interpreter lock. It should be called in the
570 main thread before creating a second thread or engaging in any other thread
Antoine Pitrouf5cf4352011-01-15 14:31:49 +0000571 operations such as ``PyEval_ReleaseThread(tstate)``. It is not needed before
572 calling :c:func:`PyEval_SaveThread` or :c:func:`PyEval_RestoreThread`.
Georg Brandl116aa622007-08-15 14:28:22 +0000573
Antoine Pitrou9bd3bbc2011-03-13 23:28:28 +0100574 This is a no-op when called for a second time.
Georg Brandl116aa622007-08-15 14:28:22 +0000575
Antoine Pitrou9bb98772011-03-15 20:22:50 +0100576 .. versionchanged:: 3.2
577 This function cannot be called before :c:func:`Py_Initialize()` anymore.
578
Georg Brandl2067bfd2008-05-25 13:05:15 +0000579 .. index:: module: _thread
Georg Brandl116aa622007-08-15 14:28:22 +0000580
Antoine Pitroubedd2c22011-01-15 12:54:19 +0000581 .. note::
582 When only the main thread exists, no GIL operations are needed. This is a
583 common situation (most Python programs do not use threads), and the lock
584 operations slow the interpreter down a bit. Therefore, the lock is not
585 created initially. This situation is equivalent to having acquired the lock:
586 when there is only a single thread, all object accesses are safe. Therefore,
587 when this function initializes the global interpreter lock, it also acquires
588 it. Before the Python :mod:`_thread` module creates a new thread, knowing
589 that either it has the lock or the lock hasn't been created yet, it calls
590 :c:func:`PyEval_InitThreads`. When this call returns, it is guaranteed that
591 the lock has been created and that the calling thread has acquired it.
Georg Brandl116aa622007-08-15 14:28:22 +0000592
Antoine Pitroubedd2c22011-01-15 12:54:19 +0000593 It is **not** safe to call this function when it is unknown which thread (if
594 any) currently has the global interpreter lock.
Georg Brandl116aa622007-08-15 14:28:22 +0000595
Antoine Pitroubedd2c22011-01-15 12:54:19 +0000596 This function is not available when thread support is disabled at compile time.
Georg Brandl116aa622007-08-15 14:28:22 +0000597
598
Georg Brandl60203b42010-10-06 10:11:56 +0000599.. c:function:: int PyEval_ThreadsInitialized()
Georg Brandl116aa622007-08-15 14:28:22 +0000600
Georg Brandl60203b42010-10-06 10:11:56 +0000601 Returns a non-zero value if :c:func:`PyEval_InitThreads` has been called. This
Benjamin Petersonef3e4c22009-04-11 19:48:14 +0000602 function can be called without holding the GIL, and therefore can be used to
Georg Brandl116aa622007-08-15 14:28:22 +0000603 avoid calls to the locking API when running single-threaded. This function is
604 not available when thread support is disabled at compile time.
605
Georg Brandl116aa622007-08-15 14:28:22 +0000606
Georg Brandl60203b42010-10-06 10:11:56 +0000607.. c:function:: PyThreadState* PyEval_SaveThread()
Georg Brandl116aa622007-08-15 14:28:22 +0000608
Benjamin Petersonef3e4c22009-04-11 19:48:14 +0000609 Release the global interpreter lock (if it has been created and thread
610 support is enabled) and reset the thread state to *NULL*, returning the
611 previous thread state (which is not *NULL*). If the lock has been created,
612 the current thread must have acquired it. (This function is available even
613 when thread support is disabled at compile time.)
Georg Brandl116aa622007-08-15 14:28:22 +0000614
615
Georg Brandl60203b42010-10-06 10:11:56 +0000616.. c:function:: void PyEval_RestoreThread(PyThreadState *tstate)
Georg Brandl116aa622007-08-15 14:28:22 +0000617
Benjamin Petersonef3e4c22009-04-11 19:48:14 +0000618 Acquire the global interpreter lock (if it has been created and thread
619 support is enabled) and set the thread state to *tstate*, which must not be
620 *NULL*. If the lock has been created, the current thread must not have
621 acquired it, otherwise deadlock ensues. (This function is available even
622 when thread support is disabled at compile time.)
Georg Brandl116aa622007-08-15 14:28:22 +0000623
Christian Heimesd8654cf2007-12-02 15:22:16 +0000624
Antoine Pitroubedd2c22011-01-15 12:54:19 +0000625.. c:function:: PyThreadState* PyThreadState_Get()
626
627 Return the current thread state. The global interpreter lock must be held.
628 When the current thread state is *NULL*, this issues a fatal error (so that
629 the caller needn't check for *NULL*).
630
631
632.. c:function:: PyThreadState* PyThreadState_Swap(PyThreadState *tstate)
633
634 Swap the current thread state with the thread state given by the argument
635 *tstate*, which may be *NULL*. The global interpreter lock must be held
636 and is not released.
637
638
Georg Brandl60203b42010-10-06 10:11:56 +0000639.. c:function:: void PyEval_ReInitThreads()
Christian Heimesd8654cf2007-12-02 15:22:16 +0000640
Georg Brandl60203b42010-10-06 10:11:56 +0000641 This function is called from :c:func:`PyOS_AfterFork` to ensure that newly
Christian Heimesd8654cf2007-12-02 15:22:16 +0000642 created child processes don't hold locks referring to threads which
643 are not running in the child process.
644
645
Antoine Pitroubedd2c22011-01-15 12:54:19 +0000646The following functions use thread-local storage, and are not compatible
647with sub-interpreters:
648
649.. c:function:: PyGILState_STATE PyGILState_Ensure()
650
651 Ensure that the current thread is ready to call the Python C API regardless
652 of the current state of Python, or of the global interpreter lock. This may
653 be called as many times as desired by a thread as long as each call is
654 matched with a call to :c:func:`PyGILState_Release`. In general, other
655 thread-related APIs may be used between :c:func:`PyGILState_Ensure` and
656 :c:func:`PyGILState_Release` calls as long as the thread state is restored to
657 its previous state before the Release(). For example, normal usage of the
658 :c:macro:`Py_BEGIN_ALLOW_THREADS` and :c:macro:`Py_END_ALLOW_THREADS` macros is
659 acceptable.
660
661 The return value is an opaque "handle" to the thread state when
662 :c:func:`PyGILState_Ensure` was called, and must be passed to
663 :c:func:`PyGILState_Release` to ensure Python is left in the same state. Even
664 though recursive calls are allowed, these handles *cannot* be shared - each
665 unique call to :c:func:`PyGILState_Ensure` must save the handle for its call
666 to :c:func:`PyGILState_Release`.
667
668 When the function returns, the current thread will hold the GIL and be able
669 to call arbitrary Python code. Failure is a fatal error.
670
671
672.. c:function:: void PyGILState_Release(PyGILState_STATE)
673
674 Release any resources previously acquired. After this call, Python's state will
675 be the same as it was prior to the corresponding :c:func:`PyGILState_Ensure` call
676 (but generally this state will be unknown to the caller, hence the use of the
677 GILState API).
678
679 Every call to :c:func:`PyGILState_Ensure` must be matched by a call to
680 :c:func:`PyGILState_Release` on the same thread.
681
682
Eli Bendersky08131682012-06-03 08:07:47 +0300683.. c:function:: PyThreadState* PyGILState_GetThisThreadState()
Sandro Tosi61baee02011-08-08 00:16:54 +0200684
685 Get the current thread state for this thread. May return ``NULL`` if no
686 GILState API has been used on the current thread. Note that the main thread
687 always has such a thread-state, even if no auto-thread-state call has been
688 made on the main thread. This is mainly a helper/diagnostic function.
689
690
Kristján Valur Jónsson684cd0e2013-03-23 03:36:16 -0700691.. c:function:: int PyGILState_Check()
692
693 Return 1 if the current thread is holding the GIL and 0 otherwise.
694 This function can be called from any thread at any time.
695 Only if it has had its Python thread state initialized and currently is
696 holding the GIL will it return 1.
697 This is mainly a helper/diagnostic function. It can be useful
698 for example in callback contexts or memory allocation functions when
699 knowing that the GIL is locked can allow the caller to perform sensitive
700 actions or otherwise behave differently.
701
Kristján Valur Jónsson34870c42013-03-23 03:56:16 -0700702 .. versionadded:: 3.4
703
Kristján Valur Jónsson684cd0e2013-03-23 03:36:16 -0700704
Georg Brandl116aa622007-08-15 14:28:22 +0000705The following macros are normally used without a trailing semicolon; look for
706example usage in the Python source distribution.
707
708
Georg Brandl60203b42010-10-06 10:11:56 +0000709.. c:macro:: Py_BEGIN_ALLOW_THREADS
Georg Brandl116aa622007-08-15 14:28:22 +0000710
711 This macro expands to ``{ PyThreadState *_save; _save = PyEval_SaveThread();``.
712 Note that it contains an opening brace; it must be matched with a following
Georg Brandl60203b42010-10-06 10:11:56 +0000713 :c:macro:`Py_END_ALLOW_THREADS` macro. See above for further discussion of this
Georg Brandl116aa622007-08-15 14:28:22 +0000714 macro. It is a no-op when thread support is disabled at compile time.
715
716
Georg Brandl60203b42010-10-06 10:11:56 +0000717.. c:macro:: Py_END_ALLOW_THREADS
Georg Brandl116aa622007-08-15 14:28:22 +0000718
719 This macro expands to ``PyEval_RestoreThread(_save); }``. Note that it contains
720 a closing brace; it must be matched with an earlier
Georg Brandl60203b42010-10-06 10:11:56 +0000721 :c:macro:`Py_BEGIN_ALLOW_THREADS` macro. See above for further discussion of
Georg Brandl116aa622007-08-15 14:28:22 +0000722 this macro. It is a no-op when thread support is disabled at compile time.
723
724
Georg Brandl60203b42010-10-06 10:11:56 +0000725.. c:macro:: Py_BLOCK_THREADS
Georg Brandl116aa622007-08-15 14:28:22 +0000726
727 This macro expands to ``PyEval_RestoreThread(_save);``: it is equivalent to
Georg Brandl60203b42010-10-06 10:11:56 +0000728 :c:macro:`Py_END_ALLOW_THREADS` without the closing brace. It is a no-op when
Georg Brandl116aa622007-08-15 14:28:22 +0000729 thread support is disabled at compile time.
730
731
Georg Brandl60203b42010-10-06 10:11:56 +0000732.. c:macro:: Py_UNBLOCK_THREADS
Georg Brandl116aa622007-08-15 14:28:22 +0000733
734 This macro expands to ``_save = PyEval_SaveThread();``: it is equivalent to
Georg Brandl60203b42010-10-06 10:11:56 +0000735 :c:macro:`Py_BEGIN_ALLOW_THREADS` without the opening brace and variable
Georg Brandl116aa622007-08-15 14:28:22 +0000736 declaration. It is a no-op when thread support is disabled at compile time.
737
Antoine Pitroubedd2c22011-01-15 12:54:19 +0000738
739Low-level API
740-------------
741
Georg Brandl116aa622007-08-15 14:28:22 +0000742All of the following functions are only available when thread support is enabled
Benjamin Petersonef3e4c22009-04-11 19:48:14 +0000743at compile time, and must be called only when the global interpreter lock has
744been created.
Georg Brandl116aa622007-08-15 14:28:22 +0000745
746
Georg Brandl60203b42010-10-06 10:11:56 +0000747.. c:function:: PyInterpreterState* PyInterpreterState_New()
Georg Brandl116aa622007-08-15 14:28:22 +0000748
Benjamin Petersonef3e4c22009-04-11 19:48:14 +0000749 Create a new interpreter state object. The global interpreter lock need not
750 be held, but may be held if it is necessary to serialize calls to this
751 function.
Georg Brandl116aa622007-08-15 14:28:22 +0000752
753
Georg Brandl60203b42010-10-06 10:11:56 +0000754.. c:function:: void PyInterpreterState_Clear(PyInterpreterState *interp)
Georg Brandl116aa622007-08-15 14:28:22 +0000755
Benjamin Petersonef3e4c22009-04-11 19:48:14 +0000756 Reset all information in an interpreter state object. The global interpreter
757 lock must be held.
Georg Brandl116aa622007-08-15 14:28:22 +0000758
759
Georg Brandl60203b42010-10-06 10:11:56 +0000760.. c:function:: void PyInterpreterState_Delete(PyInterpreterState *interp)
Georg Brandl116aa622007-08-15 14:28:22 +0000761
Benjamin Petersonef3e4c22009-04-11 19:48:14 +0000762 Destroy an interpreter state object. The global interpreter lock need not be
763 held. The interpreter state must have been reset with a previous call to
Georg Brandl60203b42010-10-06 10:11:56 +0000764 :c:func:`PyInterpreterState_Clear`.
Georg Brandl116aa622007-08-15 14:28:22 +0000765
766
Georg Brandl60203b42010-10-06 10:11:56 +0000767.. c:function:: PyThreadState* PyThreadState_New(PyInterpreterState *interp)
Georg Brandl116aa622007-08-15 14:28:22 +0000768
Benjamin Petersonef3e4c22009-04-11 19:48:14 +0000769 Create a new thread state object belonging to the given interpreter object.
770 The global interpreter lock need not be held, but may be held if it is
771 necessary to serialize calls to this function.
Georg Brandl116aa622007-08-15 14:28:22 +0000772
773
Georg Brandl60203b42010-10-06 10:11:56 +0000774.. c:function:: void PyThreadState_Clear(PyThreadState *tstate)
Georg Brandl116aa622007-08-15 14:28:22 +0000775
Benjamin Petersonef3e4c22009-04-11 19:48:14 +0000776 Reset all information in a thread state object. The global interpreter lock
777 must be held.
Georg Brandl116aa622007-08-15 14:28:22 +0000778
779
Georg Brandl60203b42010-10-06 10:11:56 +0000780.. c:function:: void PyThreadState_Delete(PyThreadState *tstate)
Georg Brandl116aa622007-08-15 14:28:22 +0000781
Benjamin Petersonef3e4c22009-04-11 19:48:14 +0000782 Destroy a thread state object. The global interpreter lock need not be held.
783 The thread state must have been reset with a previous call to
Georg Brandl60203b42010-10-06 10:11:56 +0000784 :c:func:`PyThreadState_Clear`.
Georg Brandl116aa622007-08-15 14:28:22 +0000785
786
Georg Brandl60203b42010-10-06 10:11:56 +0000787.. c:function:: PyObject* PyThreadState_GetDict()
Georg Brandl116aa622007-08-15 14:28:22 +0000788
789 Return a dictionary in which extensions can store thread-specific state
790 information. Each extension should use a unique key to use to store state in
791 the dictionary. It is okay to call this function when no current thread state
792 is available. If this function returns *NULL*, no exception has been raised and
793 the caller should assume no current thread state is available.
794
Georg Brandl116aa622007-08-15 14:28:22 +0000795
Georg Brandl60203b42010-10-06 10:11:56 +0000796.. c:function:: int PyThreadState_SetAsyncExc(long id, PyObject *exc)
Georg Brandl116aa622007-08-15 14:28:22 +0000797
798 Asynchronously raise an exception in a thread. The *id* argument is the thread
799 id of the target thread; *exc* is the exception object to be raised. This
800 function does not steal any references to *exc*. To prevent naive misuse, you
801 must write your own C extension to call this. Must be called with the GIL held.
802 Returns the number of thread states modified; this is normally one, but will be
803 zero if the thread id isn't found. If *exc* is :const:`NULL`, the pending
804 exception (if any) for the thread is cleared. This raises no exceptions.
805
Georg Brandl116aa622007-08-15 14:28:22 +0000806
Antoine Pitroubedd2c22011-01-15 12:54:19 +0000807.. c:function:: void PyEval_AcquireThread(PyThreadState *tstate)
Georg Brandl116aa622007-08-15 14:28:22 +0000808
Antoine Pitroubedd2c22011-01-15 12:54:19 +0000809 Acquire the global interpreter lock and set the current thread state to
810 *tstate*, which should not be *NULL*. The lock must have been created earlier.
811 If this thread already has the lock, deadlock ensues.
Georg Brandl116aa622007-08-15 14:28:22 +0000812
Antoine Pitrou5ace8e92011-01-15 13:11:48 +0000813 :c:func:`PyEval_RestoreThread` is a higher-level function which is always
814 available (even when thread support isn't enabled or when threads have
815 not been initialized).
816
Georg Brandl116aa622007-08-15 14:28:22 +0000817
Antoine Pitroubedd2c22011-01-15 12:54:19 +0000818.. c:function:: void PyEval_ReleaseThread(PyThreadState *tstate)
Georg Brandl116aa622007-08-15 14:28:22 +0000819
Antoine Pitroubedd2c22011-01-15 12:54:19 +0000820 Reset the current thread state to *NULL* and release the global interpreter
821 lock. The lock must have been created earlier and must be held by the current
822 thread. The *tstate* argument, which must not be *NULL*, is only used to check
823 that it represents the current thread state --- if it isn't, a fatal error is
824 reported.
Georg Brandl116aa622007-08-15 14:28:22 +0000825
Antoine Pitrou5ace8e92011-01-15 13:11:48 +0000826 :c:func:`PyEval_SaveThread` is a higher-level function which is always
827 available (even when thread support isn't enabled or when threads have
828 not been initialized).
829
Antoine Pitroubedd2c22011-01-15 12:54:19 +0000830
831.. c:function:: void PyEval_AcquireLock()
832
833 Acquire the global interpreter lock. The lock must have been created earlier.
834 If this thread already has the lock, a deadlock ensues.
835
Antoine Pitrou5ace8e92011-01-15 13:11:48 +0000836 .. deprecated:: 3.2
Antoine Pitrouf5cf4352011-01-15 14:31:49 +0000837 This function does not update the current thread state. Please use
Antoine Pitrou5ace8e92011-01-15 13:11:48 +0000838 :c:func:`PyEval_RestoreThread` or :c:func:`PyEval_AcquireThread`
839 instead.
840
Antoine Pitroubedd2c22011-01-15 12:54:19 +0000841
842.. c:function:: void PyEval_ReleaseLock()
843
844 Release the global interpreter lock. The lock must have been created earlier.
Georg Brandl116aa622007-08-15 14:28:22 +0000845
Antoine Pitrou5ace8e92011-01-15 13:11:48 +0000846 .. deprecated:: 3.2
Antoine Pitrouf5cf4352011-01-15 14:31:49 +0000847 This function does not update the current thread state. Please use
Antoine Pitrou5ace8e92011-01-15 13:11:48 +0000848 :c:func:`PyEval_SaveThread` or :c:func:`PyEval_ReleaseThread`
849 instead.
850
Georg Brandl116aa622007-08-15 14:28:22 +0000851
Antoine Pitrou8b50b832011-01-15 11:57:42 +0000852Sub-interpreter support
853=======================
854
855While in most uses, you will only embed a single Python interpreter, there
856are cases where you need to create several independent interpreters in the
857same process and perhaps even in the same thread. Sub-interpreters allow
Antoine Pitrou9bf8d1c2011-01-15 12:21:53 +0000858you to do that. You can switch between sub-interpreters using the
859:c:func:`PyThreadState_Swap` function. You can create and destroy them
860using the following functions:
Antoine Pitrou8b50b832011-01-15 11:57:42 +0000861
862
863.. c:function:: PyThreadState* Py_NewInterpreter()
864
865 .. index::
866 module: builtins
867 module: __main__
868 module: sys
869 single: stdout (in module sys)
870 single: stderr (in module sys)
871 single: stdin (in module sys)
872
873 Create a new sub-interpreter. This is an (almost) totally separate environment
874 for the execution of Python code. In particular, the new interpreter has
875 separate, independent versions of all imported modules, including the
876 fundamental modules :mod:`builtins`, :mod:`__main__` and :mod:`sys`. The
877 table of loaded modules (``sys.modules``) and the module search path
878 (``sys.path``) are also separate. The new environment has no ``sys.argv``
879 variable. It has new standard I/O stream file objects ``sys.stdin``,
880 ``sys.stdout`` and ``sys.stderr`` (however these refer to the same underlying
881 file descriptors).
882
883 The return value points to the first thread state created in the new
884 sub-interpreter. This thread state is made in the current thread state.
885 Note that no actual thread is created; see the discussion of thread states
886 below. If creation of the new interpreter is unsuccessful, *NULL* is
887 returned; no exception is set since the exception state is stored in the
888 current thread state and there may not be a current thread state. (Like all
889 other Python/C API functions, the global interpreter lock must be held before
890 calling this function and is still held when it returns; however, unlike most
891 other Python/C API functions, there needn't be a current thread state on
892 entry.)
893
894 .. index::
895 single: Py_Finalize()
896 single: Py_Initialize()
897
898 Extension modules are shared between (sub-)interpreters as follows: the first
899 time a particular extension is imported, it is initialized normally, and a
900 (shallow) copy of its module's dictionary is squirreled away. When the same
901 extension is imported by another (sub-)interpreter, a new module is initialized
902 and filled with the contents of this copy; the extension's ``init`` function is
903 not called. Note that this is different from what happens when an extension is
904 imported after the interpreter has been completely re-initialized by calling
905 :c:func:`Py_Finalize` and :c:func:`Py_Initialize`; in that case, the extension's
906 ``initmodule`` function *is* called again.
907
908 .. index:: single: close() (in module os)
909
910
911.. c:function:: void Py_EndInterpreter(PyThreadState *tstate)
912
913 .. index:: single: Py_Finalize()
914
915 Destroy the (sub-)interpreter represented by the given thread state. The given
916 thread state must be the current thread state. See the discussion of thread
917 states below. When the call returns, the current thread state is *NULL*. All
918 thread states associated with this interpreter are destroyed. (The global
919 interpreter lock must be held before calling this function and is still held
920 when it returns.) :c:func:`Py_Finalize` will destroy all sub-interpreters that
921 haven't been explicitly destroyed at that point.
922
923
924Bugs and caveats
925----------------
926
927Because sub-interpreters (and the main interpreter) are part of the same
928process, the insulation between them isn't perfect --- for example, using
929low-level file operations like :func:`os.close` they can
930(accidentally or maliciously) affect each other's open files. Because of the
931way extensions are shared between (sub-)interpreters, some extensions may not
932work properly; this is especially likely when the extension makes use of
933(static) global variables, or when the extension manipulates its module's
934dictionary after its initialization. It is possible to insert objects created
935in one sub-interpreter into a namespace of another sub-interpreter; this should
936be done with great care to avoid sharing user-defined functions, methods,
937instances or classes between sub-interpreters, since import operations executed
938by such objects may affect the wrong (sub-)interpreter's dictionary of loaded
Antoine Pitrouf1dfe732011-01-15 12:10:48 +0000939modules.
Antoine Pitrou8b50b832011-01-15 11:57:42 +0000940
Antoine Pitrouf1dfe732011-01-15 12:10:48 +0000941Also note that combining this functionality with :c:func:`PyGILState_\*` APIs
Ezio Melottid92ab082011-05-05 14:19:48 +0300942is delicate, because these APIs assume a bijection between Python thread states
Antoine Pitrouf1dfe732011-01-15 12:10:48 +0000943and OS-level threads, an assumption broken by the presence of sub-interpreters.
944It is highly recommended that you don't switch sub-interpreters between a pair
945of matching :c:func:`PyGILState_Ensure` and :c:func:`PyGILState_Release` calls.
946Furthermore, extensions (such as :mod:`ctypes`) using these APIs to allow calling
947of Python code from non-Python created threads will probably be broken when using
948sub-interpreters.
Antoine Pitrou8b50b832011-01-15 11:57:42 +0000949
Benjamin Petersona54c9092009-01-13 02:11:23 +0000950
951Asynchronous Notifications
952==========================
953
Benjamin Petersond23f8222009-04-05 19:13:16 +0000954A mechanism is provided to make asynchronous notifications to the main
Benjamin Petersona54c9092009-01-13 02:11:23 +0000955interpreter thread. These notifications take the form of a function
Antoine Pitrou1a67bee2013-09-30 21:35:44 +0200956pointer and a void pointer argument.
Benjamin Petersona54c9092009-01-13 02:11:23 +0000957
Benjamin Petersona54c9092009-01-13 02:11:23 +0000958
Ezio Melottia782cca2011-04-28 00:53:14 +0300959.. c:function:: int Py_AddPendingCall(int (*func)(void *), void *arg)
Benjamin Petersona54c9092009-01-13 02:11:23 +0000960
961 .. index:: single: Py_AddPendingCall()
962
Antoine Pitrou1a67bee2013-09-30 21:35:44 +0200963 Schedule a function to be called from the main interpreter thread. On
964 success, 0 is returned and *func* is queued for being called in the
965 main thread. On failure, -1 is returned without setting any exception.
Benjamin Petersona54c9092009-01-13 02:11:23 +0000966
Antoine Pitrou1a67bee2013-09-30 21:35:44 +0200967 When successfully queued, *func* will be *eventually* called from the
968 main interpreter thread with the argument *arg*. It will be called
969 asynchronously with respect to normally running Python code, but with
970 both these conditions met:
Benjamin Petersona54c9092009-01-13 02:11:23 +0000971
Antoine Pitrou1a67bee2013-09-30 21:35:44 +0200972 * on a :term:`bytecode` boundary;
973 * with the main thread holding the :term:`global interpreter lock`
974 (*func* can therefore use the full C API).
975
976 *func* must return 0 on success, or -1 on failure with an exception
977 set. *func* won't be interrupted to perform another asynchronous
978 notification recursively, but it can still be interrupted to switch
979 threads if the global interpreter lock is released.
980
981 This function doesn't need a current thread state to run, and it doesn't
982 need the global interpreter lock.
983
984 .. warning::
985 This is a low-level function, only useful for very special cases.
986 There is no guarantee that *func* will be called as quick as
987 possible. If the main thread is busy executing a system call,
988 *func* won't be called before the system call returns. This
989 function is generally **not** suitable for calling Python code from
990 arbitrary C threads. Instead, use the :ref:`PyGILState API<gilstate>`.
Benjamin Petersona54c9092009-01-13 02:11:23 +0000991
Georg Brandl705d9d52009-05-05 09:29:50 +0000992 .. versionadded:: 3.1
Benjamin Petersona54c9092009-01-13 02:11:23 +0000993
Georg Brandl116aa622007-08-15 14:28:22 +0000994.. _profiling:
995
996Profiling and Tracing
997=====================
998
999.. sectionauthor:: Fred L. Drake, Jr. <fdrake@acm.org>
1000
1001
1002The Python interpreter provides some low-level support for attaching profiling
1003and execution tracing facilities. These are used for profiling, debugging, and
1004coverage analysis tools.
1005
Georg Brandle6bcc912008-05-12 18:05:20 +00001006This C interface allows the profiling or tracing code to avoid the overhead of
1007calling through Python-level callable objects, making a direct C function call
1008instead. The essential attributes of the facility have not changed; the
1009interface allows trace functions to be installed per-thread, and the basic
1010events reported to the trace function are the same as had been reported to the
1011Python-level trace functions in previous versions.
Georg Brandl116aa622007-08-15 14:28:22 +00001012
1013
Georg Brandl60203b42010-10-06 10:11:56 +00001014.. c:type:: int (*Py_tracefunc)(PyObject *obj, PyFrameObject *frame, int what, PyObject *arg)
Georg Brandl116aa622007-08-15 14:28:22 +00001015
Georg Brandl60203b42010-10-06 10:11:56 +00001016 The type of the trace function registered using :c:func:`PyEval_SetProfile` and
1017 :c:func:`PyEval_SetTrace`. The first parameter is the object passed to the
Georg Brandl116aa622007-08-15 14:28:22 +00001018 registration function as *obj*, *frame* is the frame object to which the event
1019 pertains, *what* is one of the constants :const:`PyTrace_CALL`,
1020 :const:`PyTrace_EXCEPTION`, :const:`PyTrace_LINE`, :const:`PyTrace_RETURN`,
1021 :const:`PyTrace_C_CALL`, :const:`PyTrace_C_EXCEPTION`, or
1022 :const:`PyTrace_C_RETURN`, and *arg* depends on the value of *what*:
1023
1024 +------------------------------+--------------------------------------+
1025 | Value of *what* | Meaning of *arg* |
1026 +==============================+======================================+
1027 | :const:`PyTrace_CALL` | Always *NULL*. |
1028 +------------------------------+--------------------------------------+
1029 | :const:`PyTrace_EXCEPTION` | Exception information as returned by |
1030 | | :func:`sys.exc_info`. |
1031 +------------------------------+--------------------------------------+
1032 | :const:`PyTrace_LINE` | Always *NULL*. |
1033 +------------------------------+--------------------------------------+
Georg Brandld0b0e1d2010-10-15 16:42:37 +00001034 | :const:`PyTrace_RETURN` | Value being returned to the caller, |
1035 | | or *NULL* if caused by an exception. |
Georg Brandl116aa622007-08-15 14:28:22 +00001036 +------------------------------+--------------------------------------+
Georg Brandld0b0e1d2010-10-15 16:42:37 +00001037 | :const:`PyTrace_C_CALL` | Function object being called. |
Georg Brandl116aa622007-08-15 14:28:22 +00001038 +------------------------------+--------------------------------------+
Georg Brandld0b0e1d2010-10-15 16:42:37 +00001039 | :const:`PyTrace_C_EXCEPTION` | Function object being called. |
Georg Brandl116aa622007-08-15 14:28:22 +00001040 +------------------------------+--------------------------------------+
Georg Brandld0b0e1d2010-10-15 16:42:37 +00001041 | :const:`PyTrace_C_RETURN` | Function object being called. |
Georg Brandl116aa622007-08-15 14:28:22 +00001042 +------------------------------+--------------------------------------+
1043
1044
Georg Brandl60203b42010-10-06 10:11:56 +00001045.. c:var:: int PyTrace_CALL
Georg Brandl116aa622007-08-15 14:28:22 +00001046
Georg Brandl60203b42010-10-06 10:11:56 +00001047 The value of the *what* parameter to a :c:type:`Py_tracefunc` function when a new
Georg Brandl116aa622007-08-15 14:28:22 +00001048 call to a function or method is being reported, or a new entry into a generator.
1049 Note that the creation of the iterator for a generator function is not reported
1050 as there is no control transfer to the Python bytecode in the corresponding
1051 frame.
1052
1053
Georg Brandl60203b42010-10-06 10:11:56 +00001054.. c:var:: int PyTrace_EXCEPTION
Georg Brandl116aa622007-08-15 14:28:22 +00001055
Georg Brandl60203b42010-10-06 10:11:56 +00001056 The value of the *what* parameter to a :c:type:`Py_tracefunc` function when an
Georg Brandl116aa622007-08-15 14:28:22 +00001057 exception has been raised. The callback function is called with this value for
1058 *what* when after any bytecode is processed after which the exception becomes
1059 set within the frame being executed. The effect of this is that as exception
1060 propagation causes the Python stack to unwind, the callback is called upon
1061 return to each frame as the exception propagates. Only trace functions receives
1062 these events; they are not needed by the profiler.
1063
1064
Georg Brandl60203b42010-10-06 10:11:56 +00001065.. c:var:: int PyTrace_LINE
Georg Brandl116aa622007-08-15 14:28:22 +00001066
1067 The value passed as the *what* parameter to a trace function (but not a
1068 profiling function) when a line-number event is being reported.
1069
1070
Georg Brandl60203b42010-10-06 10:11:56 +00001071.. c:var:: int PyTrace_RETURN
Georg Brandl116aa622007-08-15 14:28:22 +00001072
Georg Brandl60203b42010-10-06 10:11:56 +00001073 The value for the *what* parameter to :c:type:`Py_tracefunc` functions when a
Georg Brandl116aa622007-08-15 14:28:22 +00001074 call is returning without propagating an exception.
1075
1076
Georg Brandl60203b42010-10-06 10:11:56 +00001077.. c:var:: int PyTrace_C_CALL
Georg Brandl116aa622007-08-15 14:28:22 +00001078
Georg Brandl60203b42010-10-06 10:11:56 +00001079 The value for the *what* parameter to :c:type:`Py_tracefunc` functions when a C
Georg Brandl116aa622007-08-15 14:28:22 +00001080 function is about to be called.
1081
1082
Georg Brandl60203b42010-10-06 10:11:56 +00001083.. c:var:: int PyTrace_C_EXCEPTION
Georg Brandl116aa622007-08-15 14:28:22 +00001084
Georg Brandl60203b42010-10-06 10:11:56 +00001085 The value for the *what* parameter to :c:type:`Py_tracefunc` functions when a C
Georg Brandl7cb13192010-08-03 12:06:29 +00001086 function has raised an exception.
Georg Brandl116aa622007-08-15 14:28:22 +00001087
1088
Georg Brandl60203b42010-10-06 10:11:56 +00001089.. c:var:: int PyTrace_C_RETURN
Georg Brandl116aa622007-08-15 14:28:22 +00001090
Georg Brandl60203b42010-10-06 10:11:56 +00001091 The value for the *what* parameter to :c:type:`Py_tracefunc` functions when a C
Georg Brandl116aa622007-08-15 14:28:22 +00001092 function has returned.
1093
1094
Georg Brandl60203b42010-10-06 10:11:56 +00001095.. c:function:: void PyEval_SetProfile(Py_tracefunc func, PyObject *obj)
Georg Brandl116aa622007-08-15 14:28:22 +00001096
1097 Set the profiler function to *func*. The *obj* parameter is passed to the
1098 function as its first parameter, and may be any Python object, or *NULL*. If
1099 the profile function needs to maintain state, using a different value for *obj*
1100 for each thread provides a convenient and thread-safe place to store it. The
1101 profile function is called for all monitored events except the line-number
1102 events.
1103
1104
Georg Brandl60203b42010-10-06 10:11:56 +00001105.. c:function:: void PyEval_SetTrace(Py_tracefunc func, PyObject *obj)
Georg Brandl116aa622007-08-15 14:28:22 +00001106
1107 Set the tracing function to *func*. This is similar to
Georg Brandl60203b42010-10-06 10:11:56 +00001108 :c:func:`PyEval_SetProfile`, except the tracing function does receive line-number
Georg Brandl116aa622007-08-15 14:28:22 +00001109 events.
1110
Georg Brandl60203b42010-10-06 10:11:56 +00001111.. c:function:: PyObject* PyEval_GetCallStats(PyObject *self)
Christian Heimesd8654cf2007-12-02 15:22:16 +00001112
1113 Return a tuple of function call counts. There are constants defined for the
1114 positions within the tuple:
Georg Brandl48310cd2009-01-03 21:18:54 +00001115
Christian Heimesd8654cf2007-12-02 15:22:16 +00001116 +-------------------------------+-------+
1117 | Name | Value |
1118 +===============================+=======+
1119 | :const:`PCALL_ALL` | 0 |
1120 +-------------------------------+-------+
1121 | :const:`PCALL_FUNCTION` | 1 |
1122 +-------------------------------+-------+
1123 | :const:`PCALL_FAST_FUNCTION` | 2 |
1124 +-------------------------------+-------+
1125 | :const:`PCALL_FASTER_FUNCTION`| 3 |
1126 +-------------------------------+-------+
1127 | :const:`PCALL_METHOD` | 4 |
1128 +-------------------------------+-------+
1129 | :const:`PCALL_BOUND_METHOD` | 5 |
1130 +-------------------------------+-------+
1131 | :const:`PCALL_CFUNCTION` | 6 |
1132 +-------------------------------+-------+
1133 | :const:`PCALL_TYPE` | 7 |
1134 +-------------------------------+-------+
1135 | :const:`PCALL_GENERATOR` | 8 |
1136 +-------------------------------+-------+
1137 | :const:`PCALL_OTHER` | 9 |
1138 +-------------------------------+-------+
1139 | :const:`PCALL_POP` | 10 |
1140 +-------------------------------+-------+
Georg Brandl48310cd2009-01-03 21:18:54 +00001141
Christian Heimesd8654cf2007-12-02 15:22:16 +00001142 :const:`PCALL_FAST_FUNCTION` means no argument tuple needs to be created.
1143 :const:`PCALL_FASTER_FUNCTION` means that the fast-path frame setup code is used.
1144
1145 If there is a method call where the call can be optimized by changing
1146 the argument tuple and calling the function directly, it gets recorded
1147 twice.
1148
1149 This function is only present if Python is compiled with :const:`CALL_PROFILE`
1150 defined.
Georg Brandl116aa622007-08-15 14:28:22 +00001151
1152.. _advanced-debugging:
1153
1154Advanced Debugger Support
1155=========================
1156
1157.. sectionauthor:: Fred L. Drake, Jr. <fdrake@acm.org>
1158
1159
1160These functions are only intended to be used by advanced debugging tools.
1161
1162
Georg Brandl60203b42010-10-06 10:11:56 +00001163.. c:function:: PyInterpreterState* PyInterpreterState_Head()
Georg Brandl116aa622007-08-15 14:28:22 +00001164
1165 Return the interpreter state object at the head of the list of all such objects.
1166
Georg Brandl116aa622007-08-15 14:28:22 +00001167
Georg Brandl60203b42010-10-06 10:11:56 +00001168.. c:function:: PyInterpreterState* PyInterpreterState_Next(PyInterpreterState *interp)
Georg Brandl116aa622007-08-15 14:28:22 +00001169
1170 Return the next interpreter state object after *interp* from the list of all
1171 such objects.
1172
Georg Brandl116aa622007-08-15 14:28:22 +00001173
Georg Brandl60203b42010-10-06 10:11:56 +00001174.. c:function:: PyThreadState * PyInterpreterState_ThreadHead(PyInterpreterState *interp)
Georg Brandl116aa622007-08-15 14:28:22 +00001175
Georg Brandl60203b42010-10-06 10:11:56 +00001176 Return the a pointer to the first :c:type:`PyThreadState` object in the list of
Georg Brandl116aa622007-08-15 14:28:22 +00001177 threads associated with the interpreter *interp*.
1178
Georg Brandl116aa622007-08-15 14:28:22 +00001179
Georg Brandl60203b42010-10-06 10:11:56 +00001180.. c:function:: PyThreadState* PyThreadState_Next(PyThreadState *tstate)
Georg Brandl116aa622007-08-15 14:28:22 +00001181
1182 Return the next thread state object after *tstate* from the list of all such
Georg Brandl60203b42010-10-06 10:11:56 +00001183 objects belonging to the same :c:type:`PyInterpreterState` object.
Georg Brandl116aa622007-08-15 14:28:22 +00001184