blob: e8d35838c9c5407c68fd19250b5515922815100d [file] [log] [blame]
Fred Drake3adf79e2001-10-12 19:01:43 +00001\chapter{Initialization, Finalization, and Threads
2 \label{initialization}}
3
4\begin{cfuncdesc}{void}{Py_Initialize}{}
5 Initialize the Python interpreter. In an application embedding
6 Python, this should be called before using any other Python/C API
7 functions; with the exception of
8 \cfunction{Py_SetProgramName()}\ttindex{Py_SetProgramName()},
9 \cfunction{PyEval_InitThreads()}\ttindex{PyEval_InitThreads()},
10 \cfunction{PyEval_ReleaseLock()}\ttindex{PyEval_ReleaseLock()},
11 and \cfunction{PyEval_AcquireLock()}\ttindex{PyEval_AcquireLock()}.
12 This initializes the table of loaded modules (\code{sys.modules}),
13 and\withsubitem{(in module sys)}{\ttindex{modules}\ttindex{path}}
14 creates the fundamental modules
15 \module{__builtin__}\refbimodindex{__builtin__},
16 \module{__main__}\refbimodindex{__main__} and
17 \module{sys}\refbimodindex{sys}. It also initializes the module
18 search\indexiii{module}{search}{path} path (\code{sys.path}).
19 It does not set \code{sys.argv}; use
20 \cfunction{PySys_SetArgv()}\ttindex{PySys_SetArgv()} for that. This
21 is a no-op when called for a second time (without calling
22 \cfunction{Py_Finalize()}\ttindex{Py_Finalize()} first). There is
23 no return value; it is a fatal error if the initialization fails.
24\end{cfuncdesc}
25
Martin v. Löwis336e85f2004-08-19 11:31:58 +000026\begin{cfuncdesc}{void}{Py_InitializeEx}{int initsigs}
Tim Peters7f468f22004-10-11 02:40:51 +000027 This function works like \cfunction{Py_Initialize()} if
Martin v. Löwis336e85f2004-08-19 11:31:58 +000028 \var{initsigs} is 1. If \var{initsigs} is 0, it skips
29 initialization registration of signal handlers, which
30 might be useful when Python is embedded. \versionadded{2.4}
31\end{cfuncdesc}
32
Fred Drake3adf79e2001-10-12 19:01:43 +000033\begin{cfuncdesc}{int}{Py_IsInitialized}{}
34 Return true (nonzero) when the Python interpreter has been
35 initialized, false (zero) if not. After \cfunction{Py_Finalize()}
36 is called, this returns false until \cfunction{Py_Initialize()} is
37 called again.
38\end{cfuncdesc}
39
40\begin{cfuncdesc}{void}{Py_Finalize}{}
41 Undo all initializations made by \cfunction{Py_Initialize()} and
42 subsequent use of Python/C API functions, and destroy all
43 sub-interpreters (see \cfunction{Py_NewInterpreter()} below) that
44 were created and not yet destroyed since the last call to
45 \cfunction{Py_Initialize()}. Ideally, this frees all memory
46 allocated by the Python interpreter. This is a no-op when called
47 for a second time (without calling \cfunction{Py_Initialize()} again
48 first). There is no return value; errors during finalization are
49 ignored.
50
51 This function is provided for a number of reasons. An embedding
52 application might want to restart Python without having to restart
53 the application itself. An application that has loaded the Python
54 interpreter from a dynamically loadable library (or DLL) might want
55 to free all memory allocated by Python before unloading the
56 DLL. During a hunt for memory leaks in an application a developer
57 might want to free all memory allocated by Python before exiting
58 from the application.
59
60 \strong{Bugs and caveats:} The destruction of modules and objects in
61 modules is done in random order; this may cause destructors
62 (\method{__del__()} methods) to fail when they depend on other
63 objects (even functions) or modules. Dynamically loaded extension
64 modules loaded by Python are not unloaded. Small amounts of memory
65 allocated by the Python interpreter may not be freed (if you find a
66 leak, please report it). Memory tied up in circular references
67 between objects is not freed. Some memory allocated by extension
Michael W. Hudsonbbe17f52003-02-10 19:12:42 +000068 modules may not be freed. Some extensions may not work properly if
Fred Drake3adf79e2001-10-12 19:01:43 +000069 their initialization routine is called more than once; this can
Michael W. Hudsonbbe17f52003-02-10 19:12:42 +000070 happen if an application calls \cfunction{Py_Initialize()} and
Fred Drake3adf79e2001-10-12 19:01:43 +000071 \cfunction{Py_Finalize()} more than once.
72\end{cfuncdesc}
73
74\begin{cfuncdesc}{PyThreadState*}{Py_NewInterpreter}{}
75 Create a new sub-interpreter. This is an (almost) totally separate
76 environment for the execution of Python code. In particular, the
77 new interpreter has separate, independent versions of all imported
78 modules, including the fundamental modules
79 \module{__builtin__}\refbimodindex{__builtin__},
80 \module{__main__}\refbimodindex{__main__} and
81 \module{sys}\refbimodindex{sys}. The table of loaded modules
82 (\code{sys.modules}) and the module search path (\code{sys.path})
83 are also separate. The new environment has no \code{sys.argv}
84 variable. It has new standard I/O stream file objects
85 \code{sys.stdin}, \code{sys.stdout} and \code{sys.stderr} (however
86 these refer to the same underlying \ctype{FILE} structures in the C
87 library).
88 \withsubitem{(in module sys)}{
89 \ttindex{stdout}\ttindex{stderr}\ttindex{stdin}}
90
91 The return value points to the first thread state created in the new
Brett Cannon65d63422004-03-18 01:38:11 +000092 sub-interpreter. This thread state is made in the current thread
Fred Drake3adf79e2001-10-12 19:01:43 +000093 state. Note that no actual thread is created; see the discussion of
94 thread states below. If creation of the new interpreter is
95 unsuccessful, \NULL{} is returned; no exception is set since the
96 exception state is stored in the current thread state and there may
97 not be a current thread state. (Like all other Python/C API
98 functions, the global interpreter lock must be held before calling
99 this function and is still held when it returns; however, unlike
100 most other Python/C API functions, there needn't be a current thread
101 state on entry.)
102
103 Extension modules are shared between (sub-)interpreters as follows:
104 the first time a particular extension is imported, it is initialized
105 normally, and a (shallow) copy of its module's dictionary is
106 squirreled away. When the same extension is imported by another
107 (sub-)interpreter, a new module is initialized and filled with the
108 contents of this copy; the extension's \code{init} function is not
109 called. Note that this is different from what happens when an
110 extension is imported after the interpreter has been completely
111 re-initialized by calling
112 \cfunction{Py_Finalize()}\ttindex{Py_Finalize()} and
113 \cfunction{Py_Initialize()}\ttindex{Py_Initialize()}; in that case,
114 the extension's \code{init\var{module}} function \emph{is} called
115 again.
116
117 \strong{Bugs and caveats:} Because sub-interpreters (and the main
118 interpreter) are part of the same process, the insulation between
119 them isn't perfect --- for example, using low-level file operations
120 like \withsubitem{(in module os)}{\ttindex{close()}}
121 \function{os.close()} they can (accidentally or maliciously) affect
122 each other's open files. Because of the way extensions are shared
123 between (sub-)interpreters, some extensions may not work properly;
124 this is especially likely when the extension makes use of (static)
125 global variables, or when the extension manipulates its module's
126 dictionary after its initialization. It is possible to insert
127 objects created in one sub-interpreter into a namespace of another
128 sub-interpreter; this should be done with great care to avoid
129 sharing user-defined functions, methods, instances or classes
130 between sub-interpreters, since import operations executed by such
131 objects may affect the wrong (sub-)interpreter's dictionary of
132 loaded modules. (XXX This is a hard-to-fix bug that will be
133 addressed in a future release.)
134\end{cfuncdesc}
135
136\begin{cfuncdesc}{void}{Py_EndInterpreter}{PyThreadState *tstate}
137 Destroy the (sub-)interpreter represented by the given thread state.
138 The given thread state must be the current thread state. See the
139 discussion of thread states below. When the call returns, the
140 current thread state is \NULL. All thread states associated with
Brett Cannon9b976e62004-03-18 00:49:01 +0000141 this interpreter are destroyed. (The global interpreter lock must
Fred Drake3adf79e2001-10-12 19:01:43 +0000142 be held before calling this function and is still held when it
143 returns.) \cfunction{Py_Finalize()}\ttindex{Py_Finalize()} will
144 destroy all sub-interpreters that haven't been explicitly destroyed
145 at that point.
146\end{cfuncdesc}
147
148\begin{cfuncdesc}{void}{Py_SetProgramName}{char *name}
149 This function should be called before
150 \cfunction{Py_Initialize()}\ttindex{Py_Initialize()} is called
151 for the first time, if it is called at all. It tells the
152 interpreter the value of the \code{argv[0]} argument to the
153 \cfunction{main()}\ttindex{main()} function of the program. This is
154 used by \cfunction{Py_GetPath()}\ttindex{Py_GetPath()} and some
155 other functions below to find the Python run-time libraries relative
156 to the interpreter executable. The default value is
157 \code{'python'}. The argument should point to a zero-terminated
158 character string in static storage whose contents will not change
159 for the duration of the program's execution. No code in the Python
160 interpreter will change the contents of this storage.
161\end{cfuncdesc}
162
163\begin{cfuncdesc}{char*}{Py_GetProgramName}{}
164 Return the program name set with
165 \cfunction{Py_SetProgramName()}\ttindex{Py_SetProgramName()}, or the
166 default. The returned string points into static storage; the caller
167 should not modify its value.
168\end{cfuncdesc}
169
170\begin{cfuncdesc}{char*}{Py_GetPrefix}{}
171 Return the \emph{prefix} for installed platform-independent files.
172 This is derived through a number of complicated rules from the
173 program name set with \cfunction{Py_SetProgramName()} and some
174 environment variables; for example, if the program name is
175 \code{'/usr/local/bin/python'}, the prefix is \code{'/usr/local'}.
176 The returned string points into static storage; the caller should
177 not modify its value. This corresponds to the \makevar{prefix}
178 variable in the top-level \file{Makefile} and the
179 \longprogramopt{prefix} argument to the \program{configure} script
180 at build time. The value is available to Python code as
181 \code{sys.prefix}. It is only useful on \UNIX. See also the next
182 function.
183\end{cfuncdesc}
184
185\begin{cfuncdesc}{char*}{Py_GetExecPrefix}{}
186 Return the \emph{exec-prefix} for installed
187 platform-\emph{de}pendent files. This is derived through a number
188 of complicated rules from the program name set with
189 \cfunction{Py_SetProgramName()} and some environment variables; for
190 example, if the program name is \code{'/usr/local/bin/python'}, the
191 exec-prefix is \code{'/usr/local'}. The returned string points into
192 static storage; the caller should not modify its value. This
193 corresponds to the \makevar{exec_prefix} variable in the top-level
194 \file{Makefile} and the \longprogramopt{exec-prefix} argument to the
195 \program{configure} script at build time. The value is available
196 to Python code as \code{sys.exec_prefix}. It is only useful on
197 \UNIX.
198
199 Background: The exec-prefix differs from the prefix when platform
200 dependent files (such as executables and shared libraries) are
201 installed in a different directory tree. In a typical installation,
202 platform dependent files may be installed in the
203 \file{/usr/local/plat} subtree while platform independent may be
204 installed in \file{/usr/local}.
205
206 Generally speaking, a platform is a combination of hardware and
207 software families, e.g. Sparc machines running the Solaris 2.x
208 operating system are considered the same platform, but Intel
209 machines running Solaris 2.x are another platform, and Intel
210 machines running Linux are yet another platform. Different major
211 revisions of the same operating system generally also form different
212 platforms. Non-\UNIX{} operating systems are a different story; the
213 installation strategies on those systems are so different that the
214 prefix and exec-prefix are meaningless, and set to the empty string.
215 Note that compiled Python bytecode files are platform independent
216 (but not independent from the Python version by which they were
217 compiled!).
218
219 System administrators will know how to configure the \program{mount}
220 or \program{automount} programs to share \file{/usr/local} between
221 platforms while having \file{/usr/local/plat} be a different
222 filesystem for each platform.
223\end{cfuncdesc}
224
225\begin{cfuncdesc}{char*}{Py_GetProgramFullPath}{}
226 Return the full program name of the Python executable; this is
227 computed as a side-effect of deriving the default module search path
228 from the program name (set by
229 \cfunction{Py_SetProgramName()}\ttindex{Py_SetProgramName()} above).
230 The returned string points into static storage; the caller should
231 not modify its value. The value is available to Python code as
232 \code{sys.executable}.
233 \withsubitem{(in module sys)}{\ttindex{executable}}
234\end{cfuncdesc}
235
236\begin{cfuncdesc}{char*}{Py_GetPath}{}
237 \indexiii{module}{search}{path}
238 Return the default module search path; this is computed from the
239 program name (set by \cfunction{Py_SetProgramName()} above) and some
240 environment variables. The returned string consists of a series of
241 directory names separated by a platform dependent delimiter
242 character. The delimiter character is \character{:} on \UNIX,
Martin v. Löwis36a4d8c2002-10-10 18:24:54 +0000243 \character{;} on Windows, and \character{\e n} (the \ASCII{}
Fred Drake3adf79e2001-10-12 19:01:43 +0000244 newline character) on Macintosh. The returned string points into
245 static storage; the caller should not modify its value. The value
246 is available to Python code as the list
247 \code{sys.path}\withsubitem{(in module sys)}{\ttindex{path}}, which
248 may be modified to change the future search path for loaded
249 modules.
250
251 % XXX should give the exact rules
252\end{cfuncdesc}
253
254\begin{cfuncdesc}{const char*}{Py_GetVersion}{}
255 Return the version of this Python interpreter. This is a string
256 that looks something like
257
258\begin{verbatim}
259"1.5 (#67, Dec 31 1997, 22:34:28) [GCC 2.7.2.2]"
260\end{verbatim}
261
262 The first word (up to the first space character) is the current
263 Python version; the first three characters are the major and minor
264 version separated by a period. The returned string points into
265 static storage; the caller should not modify its value. The value
Michael W. Hudsonbbe17f52003-02-10 19:12:42 +0000266 is available to Python code as \code{sys.version}.
Fred Drake3adf79e2001-10-12 19:01:43 +0000267 \withsubitem{(in module sys)}{\ttindex{version}}
268\end{cfuncdesc}
269
270\begin{cfuncdesc}{const char*}{Py_GetPlatform}{}
271 Return the platform identifier for the current platform. On \UNIX,
272 this is formed from the ``official'' name of the operating system,
273 converted to lower case, followed by the major revision number;
274 e.g., for Solaris 2.x, which is also known as SunOS 5.x, the value
275 is \code{'sunos5'}. On Macintosh, it is \code{'mac'}. On Windows,
276 it is \code{'win'}. The returned string points into static storage;
277 the caller should not modify its value. The value is available to
278 Python code as \code{sys.platform}.
279 \withsubitem{(in module sys)}{\ttindex{platform}}
280\end{cfuncdesc}
281
282\begin{cfuncdesc}{const char*}{Py_GetCopyright}{}
283 Return the official copyright string for the current Python version,
284 for example
285
286 \code{'Copyright 1991-1995 Stichting Mathematisch Centrum, Amsterdam'}
287
288 The returned string points into static storage; the caller should
Michael W. Hudsonbbe17f52003-02-10 19:12:42 +0000289 not modify its value. The value is available to Python code as
290 \code{sys.copyright}.
Fred Drake3adf79e2001-10-12 19:01:43 +0000291 \withsubitem{(in module sys)}{\ttindex{copyright}}
292\end{cfuncdesc}
293
294\begin{cfuncdesc}{const char*}{Py_GetCompiler}{}
295 Return an indication of the compiler used to build the current
296 Python version, in square brackets, for example:
297
298\begin{verbatim}
299"[GCC 2.7.2.2]"
300\end{verbatim}
301
302 The returned string points into static storage; the caller should
303 not modify its value. The value is available to Python code as part
304 of the variable \code{sys.version}.
305 \withsubitem{(in module sys)}{\ttindex{version}}
306\end{cfuncdesc}
307
308\begin{cfuncdesc}{const char*}{Py_GetBuildInfo}{}
309 Return information about the sequence number and build date and time
310 of the current Python interpreter instance, for example
311
312\begin{verbatim}
313"#67, Aug 1 1997, 22:34:28"
314\end{verbatim}
315
316 The returned string points into static storage; the caller should
317 not modify its value. The value is available to Python code as part
318 of the variable \code{sys.version}.
319 \withsubitem{(in module sys)}{\ttindex{version}}
320\end{cfuncdesc}
321
322\begin{cfuncdesc}{int}{PySys_SetArgv}{int argc, char **argv}
323 Set \code{sys.argv} based on \var{argc} and \var{argv}. These
324 parameters are similar to those passed to the program's
325 \cfunction{main()}\ttindex{main()} function with the difference that
326 the first entry should refer to the script file to be executed
327 rather than the executable hosting the Python interpreter. If there
328 isn't a script that will be run, the first entry in \var{argv} can
329 be an empty string. If this function fails to initialize
330 \code{sys.argv}, a fatal condition is signalled using
331 \cfunction{Py_FatalError()}\ttindex{Py_FatalError()}.
332 \withsubitem{(in module sys)}{\ttindex{argv}}
333 % XXX impl. doesn't seem consistent in allowing 0/NULL for the params;
334 % check w/ Guido.
335\end{cfuncdesc}
336
337% XXX Other PySys thingies (doesn't really belong in this chapter)
338
339\section{Thread State and the Global Interpreter Lock
340 \label{threads}}
341
342\index{global interpreter lock}
343\index{interpreter lock}
344\index{lock, interpreter}
345
346The Python interpreter is not fully thread safe. In order to support
347multi-threaded Python programs, there's a global lock that must be
348held by the current thread before it can safely access Python objects.
349Without the lock, even the simplest operations could cause problems in
350a multi-threaded program: for example, when two threads simultaneously
351increment the reference count of the same object, the reference count
352could end up being incremented only once instead of twice.
353
354Therefore, the rule exists that only the thread that has acquired the
355global interpreter lock may operate on Python objects or call Python/C
356API functions. In order to support multi-threaded Python programs,
357the interpreter regularly releases and reacquires the lock --- by
Skip Montanaroeec26f92003-07-02 21:38:34 +0000358default, every 100 bytecode instructions (this can be changed with
Fred Drake3adf79e2001-10-12 19:01:43 +0000359\withsubitem{(in module sys)}{\ttindex{setcheckinterval()}}
360\function{sys.setcheckinterval()}). The lock is also released and
361reacquired around potentially blocking I/O operations like reading or
362writing a file, so that other threads can run while the thread that
363requests the I/O is waiting for the I/O operation to complete.
364
365The Python interpreter needs to keep some bookkeeping information
366separate per thread --- for this it uses a data structure called
Andrew M. Kuchlingd9dfe022004-07-10 13:48:54 +0000367\ctype{PyThreadState}\ttindex{PyThreadState}. There's one global
368variable, however: the pointer to the current
Fred Drake3adf79e2001-10-12 19:01:43 +0000369\ctype{PyThreadState}\ttindex{PyThreadState} structure. While most
370thread packages have a way to store ``per-thread global data,''
371Python's internal platform independent thread abstraction doesn't
372support this yet. Therefore, the current thread state must be
373manipulated explicitly.
374
375This is easy enough in most cases. Most code manipulating the global
376interpreter lock has the following simple structure:
377
378\begin{verbatim}
379Save the thread state in a local variable.
380Release the interpreter lock.
381...Do some blocking I/O operation...
382Reacquire the interpreter lock.
383Restore the thread state from the local variable.
384\end{verbatim}
385
386This is so common that a pair of macros exists to simplify it:
387
388\begin{verbatim}
389Py_BEGIN_ALLOW_THREADS
390...Do some blocking I/O operation...
391Py_END_ALLOW_THREADS
392\end{verbatim}
393
Fred Drake375e3022002-04-09 21:09:42 +0000394The
395\csimplemacro{Py_BEGIN_ALLOW_THREADS}\ttindex{Py_BEGIN_ALLOW_THREADS}
396macro opens a new block and declares a hidden local variable; the
397\csimplemacro{Py_END_ALLOW_THREADS}\ttindex{Py_END_ALLOW_THREADS}
398macro closes the block. Another advantage of using these two macros
399is that when Python is compiled without thread support, they are
400defined empty, thus saving the thread state and lock manipulations.
Fred Drake3adf79e2001-10-12 19:01:43 +0000401
402When thread support is enabled, the block above expands to the
403following code:
404
405\begin{verbatim}
406 PyThreadState *_save;
407
408 _save = PyEval_SaveThread();
409 ...Do some blocking I/O operation...
410 PyEval_RestoreThread(_save);
411\end{verbatim}
412
413Using even lower level primitives, we can get roughly the same effect
414as follows:
415
416\begin{verbatim}
417 PyThreadState *_save;
418
419 _save = PyThreadState_Swap(NULL);
420 PyEval_ReleaseLock();
421 ...Do some blocking I/O operation...
422 PyEval_AcquireLock();
423 PyThreadState_Swap(_save);
424\end{verbatim}
425
426There are some subtle differences; in particular,
427\cfunction{PyEval_RestoreThread()}\ttindex{PyEval_RestoreThread()} saves
428and restores the value of the global variable
429\cdata{errno}\ttindex{errno}, since the lock manipulation does not
430guarantee that \cdata{errno} is left alone. Also, when thread support
431is disabled,
432\cfunction{PyEval_SaveThread()}\ttindex{PyEval_SaveThread()} and
433\cfunction{PyEval_RestoreThread()} don't manipulate the lock; in this
434case, \cfunction{PyEval_ReleaseLock()}\ttindex{PyEval_ReleaseLock()} and
435\cfunction{PyEval_AcquireLock()}\ttindex{PyEval_AcquireLock()} are not
436available. This is done so that dynamically loaded extensions
437compiled with thread support enabled can be loaded by an interpreter
438that was compiled with disabled thread support.
439
440The global interpreter lock is used to protect the pointer to the
441current thread state. When releasing the lock and saving the thread
442state, the current thread state pointer must be retrieved before the
443lock is released (since another thread could immediately acquire the
444lock and store its own thread state in the global variable).
445Conversely, when acquiring the lock and restoring the thread state,
446the lock must be acquired before storing the thread state pointer.
447
448Why am I going on with so much detail about this? Because when
449threads are created from C, they don't have the global interpreter
450lock, nor is there a thread state data structure for them. Such
451threads must bootstrap themselves into existence, by first creating a
452thread state data structure, then acquiring the lock, and finally
453storing their thread state pointer, before they can start using the
454Python/C API. When they are done, they should reset the thread state
455pointer, release the lock, and finally free their thread state data
456structure.
457
Fred Drake14004242005-01-19 04:18:39 +0000458Beginning with version 2.3, threads can now take advantage of the
459\cfunction{PyGILState_*()} functions to do all of the above
460automatically. The typical idiom for calling into Python from a C
461thread is now:
Guido van Rossum41bcbe32003-03-02 13:17:20 +0000462
463\begin{verbatim}
Andrew M. Kuchlingff8113f2004-07-10 13:42:52 +0000464 PyGILState_STATE gstate;
465 gstate = PyGILState_Ensure();
Guido van Rossum41bcbe32003-03-02 13:17:20 +0000466
467 /* Perform Python actions here. */
468 result = CallSomeFunction();
469 /* evaluate result */
470
471 /* Release the thread. No Python API allowed beyond this point. */
Andrew M. Kuchlingff8113f2004-07-10 13:42:52 +0000472 PyGILState_Release(gstate);
Guido van Rossum41bcbe32003-03-02 13:17:20 +0000473\end{verbatim}
Fred Drake3adf79e2001-10-12 19:01:43 +0000474
Fred Drake14004242005-01-19 04:18:39 +0000475Note that the \cfunction{PyGILState_*()} functions assume there is only
476one global interpreter (created automatically by
477\cfunction{Py_Initialize()}). Python still supports the creation of
478additional interpreters (using \cfunction{Py_NewInterpreter()}), but
479mixing multiple interpreters and the \cfunction{PyGILState_*()} API is
480unsupported.
481
Fred Drake3adf79e2001-10-12 19:01:43 +0000482\begin{ctypedesc}{PyInterpreterState}
483 This data structure represents the state shared by a number of
484 cooperating threads. Threads belonging to the same interpreter
485 share their module administration and a few other internal items.
486 There are no public members in this structure.
487
488 Threads belonging to different interpreters initially share nothing,
489 except process state like available memory, open file descriptors
490 and such. The global interpreter lock is also shared by all
491 threads, regardless of to which interpreter they belong.
492\end{ctypedesc}
493
494\begin{ctypedesc}{PyThreadState}
495 This data structure represents the state of a single thread. The
496 only public data member is \ctype{PyInterpreterState
497 *}\member{interp}, which points to this thread's interpreter state.
498\end{ctypedesc}
499
500\begin{cfuncdesc}{void}{PyEval_InitThreads}{}
501 Initialize and acquire the global interpreter lock. It should be
502 called in the main thread before creating a second thread or
503 engaging in any other thread operations such as
504 \cfunction{PyEval_ReleaseLock()}\ttindex{PyEval_ReleaseLock()} or
505 \code{PyEval_ReleaseThread(\var{tstate})}\ttindex{PyEval_ReleaseThread()}.
506 It is not needed before calling
507 \cfunction{PyEval_SaveThread()}\ttindex{PyEval_SaveThread()} or
508 \cfunction{PyEval_RestoreThread()}\ttindex{PyEval_RestoreThread()}.
509
510 This is a no-op when called for a second time. It is safe to call
511 this function before calling
512 \cfunction{Py_Initialize()}\ttindex{Py_Initialize()}.
513
514 When only the main thread exists, no lock operations are needed.
515 This is a common situation (most Python programs do not use
516 threads), and the lock operations slow the interpreter down a bit.
517 Therefore, the lock is not created initially. This situation is
Tim Peters7f468f22004-10-11 02:40:51 +0000518 equivalent to having acquired the lock: when there is only a single
Fred Drake3adf79e2001-10-12 19:01:43 +0000519 thread, all object accesses are safe. Therefore, when this function
520 initializes the lock, it also acquires it. Before the Python
521 \module{thread}\refbimodindex{thread} module creates a new thread,
522 knowing that either it has the lock or the lock hasn't been created
523 yet, it calls \cfunction{PyEval_InitThreads()}. When this call
Tim Peters7f468f22004-10-11 02:40:51 +0000524 returns, it is guaranteed that the lock has been created and that the
525 calling thread has acquired it.
Fred Drake3adf79e2001-10-12 19:01:43 +0000526
527 It is \strong{not} safe to call this function when it is unknown
528 which thread (if any) currently has the global interpreter lock.
529
530 This function is not available when thread support is disabled at
531 compile time.
532\end{cfuncdesc}
533
Tim Peters7f468f22004-10-11 02:40:51 +0000534\begin{cfuncdesc}{int}{PyEval_ThreadsInitialized}{}
535 Returns a non-zero value if \cfunction{PyEval_InitThreads()} has been
536 called. This function can be called without holding the lock, and
537 therefore can be used to avoid calls to the locking API when running
538 single-threaded. This function is not available when thread support
539 is disabled at compile time. \versionadded{2.4}
540\end{cfuncdesc}
541
Fred Drake3adf79e2001-10-12 19:01:43 +0000542\begin{cfuncdesc}{void}{PyEval_AcquireLock}{}
543 Acquire the global interpreter lock. The lock must have been
544 created earlier. If this thread already has the lock, a deadlock
545 ensues. This function is not available when thread support is
546 disabled at compile time.
547\end{cfuncdesc}
548
549\begin{cfuncdesc}{void}{PyEval_ReleaseLock}{}
550 Release the global interpreter lock. The lock must have been
551 created earlier. This function is not available when thread support
552 is disabled at compile time.
553\end{cfuncdesc}
554
555\begin{cfuncdesc}{void}{PyEval_AcquireThread}{PyThreadState *tstate}
Brett Cannon65d63422004-03-18 01:38:11 +0000556 Acquire the global interpreter lock and set the current thread
Fred Drake3adf79e2001-10-12 19:01:43 +0000557 state to \var{tstate}, which should not be \NULL. The lock must
558 have been created earlier. If this thread already has the lock,
559 deadlock ensues. This function is not available when thread support
560 is disabled at compile time.
561\end{cfuncdesc}
562
563\begin{cfuncdesc}{void}{PyEval_ReleaseThread}{PyThreadState *tstate}
564 Reset the current thread state to \NULL{} and release the global
565 interpreter lock. The lock must have been created earlier and must
566 be held by the current thread. The \var{tstate} argument, which
567 must not be \NULL, is only used to check that it represents the
568 current thread state --- if it isn't, a fatal error is reported.
569 This function is not available when thread support is disabled at
570 compile time.
571\end{cfuncdesc}
572
573\begin{cfuncdesc}{PyThreadState*}{PyEval_SaveThread}{}
574 Release the interpreter lock (if it has been created and thread
575 support is enabled) and reset the thread state to \NULL, returning
576 the previous thread state (which is not \NULL). If the lock has
577 been created, the current thread must have acquired it. (This
578 function is available even when thread support is disabled at
579 compile time.)
580\end{cfuncdesc}
581
582\begin{cfuncdesc}{void}{PyEval_RestoreThread}{PyThreadState *tstate}
583 Acquire the interpreter lock (if it has been created and thread
584 support is enabled) and set the thread state to \var{tstate}, which
585 must not be \NULL. If the lock has been created, the current thread
586 must not have acquired it, otherwise deadlock ensues. (This
587 function is available even when thread support is disabled at
588 compile time.)
589\end{cfuncdesc}
590
591The following macros are normally used without a trailing semicolon;
592look for example usage in the Python source distribution.
593
594\begin{csimplemacrodesc}{Py_BEGIN_ALLOW_THREADS}
595 This macro expands to
596 \samp{\{ PyThreadState *_save; _save = PyEval_SaveThread();}.
597 Note that it contains an opening brace; it must be matched with a
Fred Drake375e3022002-04-09 21:09:42 +0000598 following \csimplemacro{Py_END_ALLOW_THREADS} macro. See above for
599 further discussion of this macro. It is a no-op when thread support
600 is disabled at compile time.
Fred Drake3adf79e2001-10-12 19:01:43 +0000601\end{csimplemacrodesc}
602
603\begin{csimplemacrodesc}{Py_END_ALLOW_THREADS}
604 This macro expands to \samp{PyEval_RestoreThread(_save); \}}.
605 Note that it contains a closing brace; it must be matched with an
Fred Drake375e3022002-04-09 21:09:42 +0000606 earlier \csimplemacro{Py_BEGIN_ALLOW_THREADS} macro. See above for
607 further discussion of this macro. It is a no-op when thread support
608 is disabled at compile time.
Fred Drake3adf79e2001-10-12 19:01:43 +0000609\end{csimplemacrodesc}
610
611\begin{csimplemacrodesc}{Py_BLOCK_THREADS}
612 This macro expands to \samp{PyEval_RestoreThread(_save);}: it is
Fred Drake375e3022002-04-09 21:09:42 +0000613 equivalent to \csimplemacro{Py_END_ALLOW_THREADS} without the
614 closing brace. It is a no-op when thread support is disabled at
615 compile time.
Fred Drake3adf79e2001-10-12 19:01:43 +0000616\end{csimplemacrodesc}
617
618\begin{csimplemacrodesc}{Py_UNBLOCK_THREADS}
619 This macro expands to \samp{_save = PyEval_SaveThread();}: it is
Fred Drake375e3022002-04-09 21:09:42 +0000620 equivalent to \csimplemacro{Py_BEGIN_ALLOW_THREADS} without the
621 opening brace and variable declaration. It is a no-op when thread
622 support is disabled at compile time.
Fred Drake3adf79e2001-10-12 19:01:43 +0000623\end{csimplemacrodesc}
624
625All of the following functions are only available when thread support
626is enabled at compile time, and must be called only when the
627interpreter lock has been created.
628
629\begin{cfuncdesc}{PyInterpreterState*}{PyInterpreterState_New}{}
630 Create a new interpreter state object. The interpreter lock need
631 not be held, but may be held if it is necessary to serialize calls
632 to this function.
633\end{cfuncdesc}
634
635\begin{cfuncdesc}{void}{PyInterpreterState_Clear}{PyInterpreterState *interp}
636 Reset all information in an interpreter state object. The
637 interpreter lock must be held.
638\end{cfuncdesc}
639
640\begin{cfuncdesc}{void}{PyInterpreterState_Delete}{PyInterpreterState *interp}
641 Destroy an interpreter state object. The interpreter lock need not
642 be held. The interpreter state must have been reset with a previous
643 call to \cfunction{PyInterpreterState_Clear()}.
644\end{cfuncdesc}
645
646\begin{cfuncdesc}{PyThreadState*}{PyThreadState_New}{PyInterpreterState *interp}
647 Create a new thread state object belonging to the given interpreter
648 object. The interpreter lock need not be held, but may be held if
649 it is necessary to serialize calls to this function.
650\end{cfuncdesc}
651
652\begin{cfuncdesc}{void}{PyThreadState_Clear}{PyThreadState *tstate}
653 Reset all information in a thread state object. The interpreter lock
654 must be held.
655\end{cfuncdesc}
656
657\begin{cfuncdesc}{void}{PyThreadState_Delete}{PyThreadState *tstate}
658 Destroy a thread state object. The interpreter lock need not be
659 held. The thread state must have been reset with a previous call to
660 \cfunction{PyThreadState_Clear()}.
661\end{cfuncdesc}
662
663\begin{cfuncdesc}{PyThreadState*}{PyThreadState_Get}{}
664 Return the current thread state. The interpreter lock must be
665 held. When the current thread state is \NULL, this issues a fatal
666 error (so that the caller needn't check for \NULL).
667\end{cfuncdesc}
668
669\begin{cfuncdesc}{PyThreadState*}{PyThreadState_Swap}{PyThreadState *tstate}
670 Swap the current thread state with the thread state given by the
671 argument \var{tstate}, which may be \NULL. The interpreter lock
672 must be held.
673\end{cfuncdesc}
674
675\begin{cfuncdesc}{PyObject*}{PyThreadState_GetDict}{}
676 Return a dictionary in which extensions can store thread-specific
677 state information. Each extension should use a unique key to use to
Guido van Rossum0fc8f002003-04-15 15:12:39 +0000678 store state in the dictionary. It is okay to call this function
679 when no current thread state is available.
680 If this function returns \NULL, no exception has been raised and the
681 caller should assume no current thread state is available.
682 \versionchanged[Previously this could only be called when a current
Fred Drake4ccf6e72003-09-07 02:32:55 +0000683 thread is active, and \NULL{} meant that an exception was raised]{2.3}
Fred Drake3adf79e2001-10-12 19:01:43 +0000684\end{cfuncdesc}
685
Fred Drake6595e152003-06-29 02:14:31 +0000686\begin{cfuncdesc}{int}{PyThreadState_SetAsyncExc}{long id, PyObject *exc}
687 Asynchronously raise an exception in a thread.
688 The \var{id} argument is the thread id of the target thread;
689 \var{exc} is the exception object to be raised.
690 This function does not steal any references to \var{exc}.
691 To prevent naive misuse, you must write your own C extension
692 to call this. Must be called with the GIL held.
693 Returns the number of thread states modified; if it returns a number
694 greater than one, you're in trouble, and you should call it again
695 with \var{exc} set to \constant{NULL} to revert the effect.
696 This raises no exceptions.
697 \versionadded{2.3}
698\end{cfuncdesc}
699
Andrew M. Kuchling371d98a2004-07-10 13:31:18 +0000700\begin{cfuncdesc}{PyGILState_STATE}{PyGILState_Ensure}{}
701Ensure that the current thread is ready to call the Python
702C API regardless of the current state of Python, or of its
703thread lock. This may be called as many times as desired
704by a thread as long as each call is matched with a call to
705\cfunction{PyGILState_Release()}.
706In general, other thread-related APIs may
707be used between \cfunction{PyGILState_Ensure()} and \cfunction{PyGILState_Release()} calls as long as the
708thread state is restored to its previous state before the Release().
709For example, normal usage of the \csimplemacro{Py_BEGIN_ALLOW_THREADS}
710and \csimplemacro{Py_END_ALLOW_THREADS} macros is acceptable.
711
712The return value is an opaque "handle" to the thread state when
713\cfunction{PyGILState_Acquire()} was called, and must be passed to
714\cfunction{PyGILState_Release()} to ensure Python is left in the same
715state. Even though recursive calls are allowed, these handles
716\emph{cannot} be shared - each unique call to
717\cfunction{PyGILState_Ensure} must save the handle for its call to
718\cfunction{PyGILState_Release}.
719
720When the function returns, the current thread will hold the GIL.
721Failure is a fatal error.
722 \versionadded{2.3}
723\end{cfuncdesc}
724
725\begin{cfuncdesc}{void}{PyGILState_Release}{PyGILState_STATE}
726Release any resources previously acquired. After this call, Python's
727state will be the same as it was prior to the corresponding
Andrew M. Kuchlingff8113f2004-07-10 13:42:52 +0000728\cfunction{PyGILState_Ensure} call (but generally this state will be
729unknown to the caller, hence the use of the GILState API.)
Andrew M. Kuchling371d98a2004-07-10 13:31:18 +0000730
731Every call to \cfunction{PyGILState_Ensure()} must be matched by a call to
732\cfunction{PyGILState_Release()} on the same thread.
733 \versionadded{2.3}
734\end{cfuncdesc}
735
Fred Drake3adf79e2001-10-12 19:01:43 +0000736
737\section{Profiling and Tracing \label{profiling}}
738
739\sectionauthor{Fred L. Drake, Jr.}{fdrake@acm.org}
740
741The Python interpreter provides some low-level support for attaching
742profiling and execution tracing facilities. These are used for
743profiling, debugging, and coverage analysis tools.
744
745Starting with Python 2.2, the implementation of this facility was
746substantially revised, and an interface from C was added. This C
747interface allows the profiling or tracing code to avoid the overhead
748of calling through Python-level callable objects, making a direct C
749function call instead. The essential attributes of the facility have
750not changed; the interface allows trace functions to be installed
751per-thread, and the basic events reported to the trace function are
752the same as had been reported to the Python-level trace functions in
753previous versions.
754
755\begin{ctypedesc}[Py_tracefunc]{int (*Py_tracefunc)(PyObject *obj,
756 PyFrameObject *frame, int what,
757 PyObject *arg)}
758 The type of the trace function registered using
759 \cfunction{PyEval_SetProfile()} and \cfunction{PyEval_SetTrace()}.
760 The first parameter is the object passed to the registration
761 function as \var{obj}, \var{frame} is the frame object to which the
762 event pertains, \var{what} is one of the constants
Nicholas Bastinc69ebe82004-03-24 21:57:10 +0000763 \constant{PyTrace_CALL}, \constant{PyTrace_EXCEPTION},
764 \constant{PyTrace_LINE}, \constant{PyTrace_RETURN},
765 \constant{PyTrace_C_CALL}, \constant{PyTrace_C_EXCEPTION},
766 or \constant{PyTrace_C_RETURN}, and \var{arg}
Fred Drake3adf79e2001-10-12 19:01:43 +0000767 depends on the value of \var{what}:
768
769 \begin{tableii}{l|l}{constant}{Value of \var{what}}{Meaning of \var{arg}}
770 \lineii{PyTrace_CALL}{Always \NULL.}
Nicholas Bastinc69ebe82004-03-24 21:57:10 +0000771 \lineii{PyTrace_EXCEPTION}{Exception information as returned by
Fred Drake3adf79e2001-10-12 19:01:43 +0000772 \function{sys.exc_info()}.}
773 \lineii{PyTrace_LINE}{Always \NULL.}
774 \lineii{PyTrace_RETURN}{Value being returned to the caller.}
Nicholas Bastinc69ebe82004-03-24 21:57:10 +0000775 \lineii{PyTrace_C_CALL}{Name of function being called.}
776 \lineii{PyTrace_C_EXCEPTION}{Always \NULL.}
777 \lineii{PyTrace_C_RETURN}{Always \NULL.}
Fred Drake3adf79e2001-10-12 19:01:43 +0000778 \end{tableii}
779\end{ctypedesc}
780
781\begin{cvardesc}{int}{PyTrace_CALL}
782 The value of the \var{what} parameter to a \ctype{Py_tracefunc}
783 function when a new call to a function or method is being reported,
784 or a new entry into a generator. Note that the creation of the
785 iterator for a generator function is not reported as there is no
786 control transfer to the Python bytecode in the corresponding frame.
787\end{cvardesc}
788
Nicholas Bastinc69ebe82004-03-24 21:57:10 +0000789\begin{cvardesc}{int}{PyTrace_EXCEPTION}
Fred Drake3adf79e2001-10-12 19:01:43 +0000790 The value of the \var{what} parameter to a \ctype{Py_tracefunc}
Fred Drake5bf1ecd2001-10-16 19:23:55 +0000791 function when an exception has been raised. The callback function
792 is called with this value for \var{what} when after any bytecode is
793 processed after which the exception becomes set within the frame
Martin v. Löwis95cf84a2003-10-19 07:32:24 +0000794 being executed. The effect of this is that as exception propagation
Fred Drake5bf1ecd2001-10-16 19:23:55 +0000795 causes the Python stack to unwind, the callback is called upon
Thomas Helleread60e52002-12-06 22:42:13 +0000796 return to each frame as the exception propagates. Only trace
Fred Drake5bf1ecd2001-10-16 19:23:55 +0000797 functions receives these events; they are not needed by the
798 profiler.
Fred Drake3adf79e2001-10-12 19:01:43 +0000799\end{cvardesc}
800
801\begin{cvardesc}{int}{PyTrace_LINE}
802 The value passed as the \var{what} parameter to a trace function
803 (but not a profiling function) when a line-number event is being
804 reported.
805\end{cvardesc}
806
807\begin{cvardesc}{int}{PyTrace_RETURN}
808 The value for the \var{what} parameter to \ctype{Py_tracefunc}
Martin v. Löwis95cf84a2003-10-19 07:32:24 +0000809 functions when a call is returning without propagating an exception.
Fred Drake3adf79e2001-10-12 19:01:43 +0000810\end{cvardesc}
811
Nicholas Bastinc69ebe82004-03-24 21:57:10 +0000812\begin{cvardesc}{int}{PyTrace_C_CALL}
813 The value for the \var{what} parameter to \ctype{Py_tracefunc}
814 functions when a C function is about to be called.
815\end{cvardesc}
816
817\begin{cvardesc}{int}{PyTrace_C_EXCEPTION}
818 The value for the \var{what} parameter to \ctype{Py_tracefunc}
819 functions when a C function has thrown an exception.
820\end{cvardesc}
821
822\begin{cvardesc}{int}{PyTrace_C_RETURN}
823 The value for the \var{what} parameter to \ctype{Py_tracefunc}
824 functions when a C function has returned.
825\end{cvardesc}
826
Fred Drake3adf79e2001-10-12 19:01:43 +0000827\begin{cfuncdesc}{void}{PyEval_SetProfile}{Py_tracefunc func, PyObject *obj}
828 Set the profiler function to \var{func}. The \var{obj} parameter is
829 passed to the function as its first parameter, and may be any Python
830 object, or \NULL. If the profile function needs to maintain state,
831 using a different value for \var{obj} for each thread provides a
832 convenient and thread-safe place to store it. The profile function
833 is called for all monitored events except the line-number events.
834\end{cfuncdesc}
835
836\begin{cfuncdesc}{void}{PyEval_SetTrace}{Py_tracefunc func, PyObject *obj}
Raymond Hettingerf17d65d2003-08-12 00:01:16 +0000837 Set the tracing function to \var{func}. This is similar to
Fred Drake3adf79e2001-10-12 19:01:43 +0000838 \cfunction{PyEval_SetProfile()}, except the tracing function does
839 receive line-number events.
840\end{cfuncdesc}
841
842
843\section{Advanced Debugger Support \label{advanced-debugging}}
844\sectionauthor{Fred L. Drake, Jr.}{fdrake@acm.org}
845
846These functions are only intended to be used by advanced debugging
847tools.
848
849\begin{cfuncdesc}{PyInterpreterState*}{PyInterpreterState_Head}{}
850 Return the interpreter state object at the head of the list of all
851 such objects.
852 \versionadded{2.2}
853\end{cfuncdesc}
854
855\begin{cfuncdesc}{PyInterpreterState*}{PyInterpreterState_Next}{PyInterpreterState *interp}
856 Return the next interpreter state object after \var{interp} from the
857 list of all such objects.
858 \versionadded{2.2}
859\end{cfuncdesc}
860
861\begin{cfuncdesc}{PyThreadState *}{PyInterpreterState_ThreadHead}{PyInterpreterState *interp}
862 Return the a pointer to the first \ctype{PyThreadState} object in
863 the list of threads associated with the interpreter \var{interp}.
864 \versionadded{2.2}
865\end{cfuncdesc}
866
867\begin{cfuncdesc}{PyThreadState*}{PyThreadState_Next}{PyThreadState *tstate}
868 Return the next thread state object after \var{tstate} from the list
869 of all such objects belonging to the same \ctype{PyInterpreterState}
870 object.
871 \versionadded{2.2}
872\end{cfuncdesc}