blob: 712ca5432baae80a9aad496e67b57ec84317cd2c [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
26\begin{cfuncdesc}{int}{Py_IsInitialized}{}
27 Return true (nonzero) when the Python interpreter has been
28 initialized, false (zero) if not. After \cfunction{Py_Finalize()}
29 is called, this returns false until \cfunction{Py_Initialize()} is
30 called again.
31\end{cfuncdesc}
32
33\begin{cfuncdesc}{void}{Py_Finalize}{}
34 Undo all initializations made by \cfunction{Py_Initialize()} and
35 subsequent use of Python/C API functions, and destroy all
36 sub-interpreters (see \cfunction{Py_NewInterpreter()} below) that
37 were created and not yet destroyed since the last call to
38 \cfunction{Py_Initialize()}. Ideally, this frees all memory
39 allocated by the Python interpreter. This is a no-op when called
40 for a second time (without calling \cfunction{Py_Initialize()} again
41 first). There is no return value; errors during finalization are
42 ignored.
43
44 This function is provided for a number of reasons. An embedding
45 application might want to restart Python without having to restart
46 the application itself. An application that has loaded the Python
47 interpreter from a dynamically loadable library (or DLL) might want
48 to free all memory allocated by Python before unloading the
49 DLL. During a hunt for memory leaks in an application a developer
50 might want to free all memory allocated by Python before exiting
51 from the application.
52
53 \strong{Bugs and caveats:} The destruction of modules and objects in
54 modules is done in random order; this may cause destructors
55 (\method{__del__()} methods) to fail when they depend on other
56 objects (even functions) or modules. Dynamically loaded extension
57 modules loaded by Python are not unloaded. Small amounts of memory
58 allocated by the Python interpreter may not be freed (if you find a
59 leak, please report it). Memory tied up in circular references
60 between objects is not freed. Some memory allocated by extension
61 modules may not be freed. Some extension may not work properly if
62 their initialization routine is called more than once; this can
63 happen if an applcation calls \cfunction{Py_Initialize()} and
64 \cfunction{Py_Finalize()} more than once.
65\end{cfuncdesc}
66
67\begin{cfuncdesc}{PyThreadState*}{Py_NewInterpreter}{}
68 Create a new sub-interpreter. This is an (almost) totally separate
69 environment for the execution of Python code. In particular, the
70 new interpreter has separate, independent versions of all imported
71 modules, including the fundamental modules
72 \module{__builtin__}\refbimodindex{__builtin__},
73 \module{__main__}\refbimodindex{__main__} and
74 \module{sys}\refbimodindex{sys}. The table of loaded modules
75 (\code{sys.modules}) and the module search path (\code{sys.path})
76 are also separate. The new environment has no \code{sys.argv}
77 variable. It has new standard I/O stream file objects
78 \code{sys.stdin}, \code{sys.stdout} and \code{sys.stderr} (however
79 these refer to the same underlying \ctype{FILE} structures in the C
80 library).
81 \withsubitem{(in module sys)}{
82 \ttindex{stdout}\ttindex{stderr}\ttindex{stdin}}
83
84 The return value points to the first thread state created in the new
85 sub-interpreter. This thread state is made the current thread
86 state. Note that no actual thread is created; see the discussion of
87 thread states below. If creation of the new interpreter is
88 unsuccessful, \NULL{} is returned; no exception is set since the
89 exception state is stored in the current thread state and there may
90 not be a current thread state. (Like all other Python/C API
91 functions, the global interpreter lock must be held before calling
92 this function and is still held when it returns; however, unlike
93 most other Python/C API functions, there needn't be a current thread
94 state on entry.)
95
96 Extension modules are shared between (sub-)interpreters as follows:
97 the first time a particular extension is imported, it is initialized
98 normally, and a (shallow) copy of its module's dictionary is
99 squirreled away. When the same extension is imported by another
100 (sub-)interpreter, a new module is initialized and filled with the
101 contents of this copy; the extension's \code{init} function is not
102 called. Note that this is different from what happens when an
103 extension is imported after the interpreter has been completely
104 re-initialized by calling
105 \cfunction{Py_Finalize()}\ttindex{Py_Finalize()} and
106 \cfunction{Py_Initialize()}\ttindex{Py_Initialize()}; in that case,
107 the extension's \code{init\var{module}} function \emph{is} called
108 again.
109
110 \strong{Bugs and caveats:} Because sub-interpreters (and the main
111 interpreter) are part of the same process, the insulation between
112 them isn't perfect --- for example, using low-level file operations
113 like \withsubitem{(in module os)}{\ttindex{close()}}
114 \function{os.close()} they can (accidentally or maliciously) affect
115 each other's open files. Because of the way extensions are shared
116 between (sub-)interpreters, some extensions may not work properly;
117 this is especially likely when the extension makes use of (static)
118 global variables, or when the extension manipulates its module's
119 dictionary after its initialization. It is possible to insert
120 objects created in one sub-interpreter into a namespace of another
121 sub-interpreter; this should be done with great care to avoid
122 sharing user-defined functions, methods, instances or classes
123 between sub-interpreters, since import operations executed by such
124 objects may affect the wrong (sub-)interpreter's dictionary of
125 loaded modules. (XXX This is a hard-to-fix bug that will be
126 addressed in a future release.)
127\end{cfuncdesc}
128
129\begin{cfuncdesc}{void}{Py_EndInterpreter}{PyThreadState *tstate}
130 Destroy the (sub-)interpreter represented by the given thread state.
131 The given thread state must be the current thread state. See the
132 discussion of thread states below. When the call returns, the
133 current thread state is \NULL. All thread states associated with
134 this interpreted are destroyed. (The global interpreter lock must
135 be held before calling this function and is still held when it
136 returns.) \cfunction{Py_Finalize()}\ttindex{Py_Finalize()} will
137 destroy all sub-interpreters that haven't been explicitly destroyed
138 at that point.
139\end{cfuncdesc}
140
141\begin{cfuncdesc}{void}{Py_SetProgramName}{char *name}
142 This function should be called before
143 \cfunction{Py_Initialize()}\ttindex{Py_Initialize()} is called
144 for the first time, if it is called at all. It tells the
145 interpreter the value of the \code{argv[0]} argument to the
146 \cfunction{main()}\ttindex{main()} function of the program. This is
147 used by \cfunction{Py_GetPath()}\ttindex{Py_GetPath()} and some
148 other functions below to find the Python run-time libraries relative
149 to the interpreter executable. The default value is
150 \code{'python'}. The argument should point to a zero-terminated
151 character string in static storage whose contents will not change
152 for the duration of the program's execution. No code in the Python
153 interpreter will change the contents of this storage.
154\end{cfuncdesc}
155
156\begin{cfuncdesc}{char*}{Py_GetProgramName}{}
157 Return the program name set with
158 \cfunction{Py_SetProgramName()}\ttindex{Py_SetProgramName()}, or the
159 default. The returned string points into static storage; the caller
160 should not modify its value.
161\end{cfuncdesc}
162
163\begin{cfuncdesc}{char*}{Py_GetPrefix}{}
164 Return the \emph{prefix} for installed platform-independent files.
165 This is derived through a number of complicated rules from the
166 program name set with \cfunction{Py_SetProgramName()} and some
167 environment variables; for example, if the program name is
168 \code{'/usr/local/bin/python'}, the prefix is \code{'/usr/local'}.
169 The returned string points into static storage; the caller should
170 not modify its value. This corresponds to the \makevar{prefix}
171 variable in the top-level \file{Makefile} and the
172 \longprogramopt{prefix} argument to the \program{configure} script
173 at build time. The value is available to Python code as
174 \code{sys.prefix}. It is only useful on \UNIX. See also the next
175 function.
176\end{cfuncdesc}
177
178\begin{cfuncdesc}{char*}{Py_GetExecPrefix}{}
179 Return the \emph{exec-prefix} for installed
180 platform-\emph{de}pendent files. This is derived through a number
181 of complicated rules from the program name set with
182 \cfunction{Py_SetProgramName()} and some environment variables; for
183 example, if the program name is \code{'/usr/local/bin/python'}, the
184 exec-prefix is \code{'/usr/local'}. The returned string points into
185 static storage; the caller should not modify its value. This
186 corresponds to the \makevar{exec_prefix} variable in the top-level
187 \file{Makefile} and the \longprogramopt{exec-prefix} argument to the
188 \program{configure} script at build time. The value is available
189 to Python code as \code{sys.exec_prefix}. It is only useful on
190 \UNIX.
191
192 Background: The exec-prefix differs from the prefix when platform
193 dependent files (such as executables and shared libraries) are
194 installed in a different directory tree. In a typical installation,
195 platform dependent files may be installed in the
196 \file{/usr/local/plat} subtree while platform independent may be
197 installed in \file{/usr/local}.
198
199 Generally speaking, a platform is a combination of hardware and
200 software families, e.g. Sparc machines running the Solaris 2.x
201 operating system are considered the same platform, but Intel
202 machines running Solaris 2.x are another platform, and Intel
203 machines running Linux are yet another platform. Different major
204 revisions of the same operating system generally also form different
205 platforms. Non-\UNIX{} operating systems are a different story; the
206 installation strategies on those systems are so different that the
207 prefix and exec-prefix are meaningless, and set to the empty string.
208 Note that compiled Python bytecode files are platform independent
209 (but not independent from the Python version by which they were
210 compiled!).
211
212 System administrators will know how to configure the \program{mount}
213 or \program{automount} programs to share \file{/usr/local} between
214 platforms while having \file{/usr/local/plat} be a different
215 filesystem for each platform.
216\end{cfuncdesc}
217
218\begin{cfuncdesc}{char*}{Py_GetProgramFullPath}{}
219 Return the full program name of the Python executable; this is
220 computed as a side-effect of deriving the default module search path
221 from the program name (set by
222 \cfunction{Py_SetProgramName()}\ttindex{Py_SetProgramName()} above).
223 The returned string points into static storage; the caller should
224 not modify its value. The value is available to Python code as
225 \code{sys.executable}.
226 \withsubitem{(in module sys)}{\ttindex{executable}}
227\end{cfuncdesc}
228
229\begin{cfuncdesc}{char*}{Py_GetPath}{}
230 \indexiii{module}{search}{path}
231 Return the default module search path; this is computed from the
232 program name (set by \cfunction{Py_SetProgramName()} above) and some
233 environment variables. The returned string consists of a series of
234 directory names separated by a platform dependent delimiter
235 character. The delimiter character is \character{:} on \UNIX,
236 \character{;} on DOS/Windows, and \character{\e n} (the \ASCII{}
237 newline character) on Macintosh. The returned string points into
238 static storage; the caller should not modify its value. The value
239 is available to Python code as the list
240 \code{sys.path}\withsubitem{(in module sys)}{\ttindex{path}}, which
241 may be modified to change the future search path for loaded
242 modules.
243
244 % XXX should give the exact rules
245\end{cfuncdesc}
246
247\begin{cfuncdesc}{const char*}{Py_GetVersion}{}
248 Return the version of this Python interpreter. This is a string
249 that looks something like
250
251\begin{verbatim}
252"1.5 (#67, Dec 31 1997, 22:34:28) [GCC 2.7.2.2]"
253\end{verbatim}
254
255 The first word (up to the first space character) is the current
256 Python version; the first three characters are the major and minor
257 version separated by a period. The returned string points into
258 static storage; the caller should not modify its value. The value
259 is available to Python code as the list \code{sys.version}.
260 \withsubitem{(in module sys)}{\ttindex{version}}
261\end{cfuncdesc}
262
263\begin{cfuncdesc}{const char*}{Py_GetPlatform}{}
264 Return the platform identifier for the current platform. On \UNIX,
265 this is formed from the ``official'' name of the operating system,
266 converted to lower case, followed by the major revision number;
267 e.g., for Solaris 2.x, which is also known as SunOS 5.x, the value
268 is \code{'sunos5'}. On Macintosh, it is \code{'mac'}. On Windows,
269 it is \code{'win'}. The returned string points into static storage;
270 the caller should not modify its value. The value is available to
271 Python code as \code{sys.platform}.
272 \withsubitem{(in module sys)}{\ttindex{platform}}
273\end{cfuncdesc}
274
275\begin{cfuncdesc}{const char*}{Py_GetCopyright}{}
276 Return the official copyright string for the current Python version,
277 for example
278
279 \code{'Copyright 1991-1995 Stichting Mathematisch Centrum, Amsterdam'}
280
281 The returned string points into static storage; the caller should
282 not modify its value. The value is available to Python code as the
283 list \code{sys.copyright}.
284 \withsubitem{(in module sys)}{\ttindex{copyright}}
285\end{cfuncdesc}
286
287\begin{cfuncdesc}{const char*}{Py_GetCompiler}{}
288 Return an indication of the compiler used to build the current
289 Python version, in square brackets, for example:
290
291\begin{verbatim}
292"[GCC 2.7.2.2]"
293\end{verbatim}
294
295 The returned string points into static storage; the caller should
296 not modify its value. The value is available to Python code as part
297 of the variable \code{sys.version}.
298 \withsubitem{(in module sys)}{\ttindex{version}}
299\end{cfuncdesc}
300
301\begin{cfuncdesc}{const char*}{Py_GetBuildInfo}{}
302 Return information about the sequence number and build date and time
303 of the current Python interpreter instance, for example
304
305\begin{verbatim}
306"#67, Aug 1 1997, 22:34:28"
307\end{verbatim}
308
309 The returned string points into static storage; the caller should
310 not modify its value. The value is available to Python code as part
311 of the variable \code{sys.version}.
312 \withsubitem{(in module sys)}{\ttindex{version}}
313\end{cfuncdesc}
314
315\begin{cfuncdesc}{int}{PySys_SetArgv}{int argc, char **argv}
316 Set \code{sys.argv} based on \var{argc} and \var{argv}. These
317 parameters are similar to those passed to the program's
318 \cfunction{main()}\ttindex{main()} function with the difference that
319 the first entry should refer to the script file to be executed
320 rather than the executable hosting the Python interpreter. If there
321 isn't a script that will be run, the first entry in \var{argv} can
322 be an empty string. If this function fails to initialize
323 \code{sys.argv}, a fatal condition is signalled using
324 \cfunction{Py_FatalError()}\ttindex{Py_FatalError()}.
325 \withsubitem{(in module sys)}{\ttindex{argv}}
326 % XXX impl. doesn't seem consistent in allowing 0/NULL for the params;
327 % check w/ Guido.
328\end{cfuncdesc}
329
330% XXX Other PySys thingies (doesn't really belong in this chapter)
331
332\section{Thread State and the Global Interpreter Lock
333 \label{threads}}
334
335\index{global interpreter lock}
336\index{interpreter lock}
337\index{lock, interpreter}
338
339The Python interpreter is not fully thread safe. In order to support
340multi-threaded Python programs, there's a global lock that must be
341held by the current thread before it can safely access Python objects.
342Without the lock, even the simplest operations could cause problems in
343a multi-threaded program: for example, when two threads simultaneously
344increment the reference count of the same object, the reference count
345could end up being incremented only once instead of twice.
346
347Therefore, the rule exists that only the thread that has acquired the
348global interpreter lock may operate on Python objects or call Python/C
349API functions. In order to support multi-threaded Python programs,
350the interpreter regularly releases and reacquires the lock --- by
351default, every ten bytecode instructions (this can be changed with
352\withsubitem{(in module sys)}{\ttindex{setcheckinterval()}}
353\function{sys.setcheckinterval()}). The lock is also released and
354reacquired around potentially blocking I/O operations like reading or
355writing a file, so that other threads can run while the thread that
356requests the I/O is waiting for the I/O operation to complete.
357
358The Python interpreter needs to keep some bookkeeping information
359separate per thread --- for this it uses a data structure called
360\ctype{PyThreadState}\ttindex{PyThreadState}. This is new in Python
3611.5; in earlier versions, such state was stored in global variables,
362and switching threads could cause problems. In particular, exception
363handling is now thread safe, when the application uses
364\withsubitem{(in module sys)}{\ttindex{exc_info()}}
365\function{sys.exc_info()} to access the exception last raised in the
366current thread.
367
368There's one global variable left, however: the pointer to the current
369\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
458When creating a thread data structure, you need to provide an
459interpreter state data structure. The interpreter state data
460structure hold global data that is shared by all threads in an
461interpreter, for example the module administration
462(\code{sys.modules}). Depending on your needs, you can either create
463a new interpreter state data structure, or share the interpreter state
464data structure used by the Python main thread (to access the latter,
465you must obtain the thread state and access its \member{interp} member;
466this must be done by a thread that is created by Python or by the main
467thread after Python is initialized).
468
469
470\begin{ctypedesc}{PyInterpreterState}
471 This data structure represents the state shared by a number of
472 cooperating threads. Threads belonging to the same interpreter
473 share their module administration and a few other internal items.
474 There are no public members in this structure.
475
476 Threads belonging to different interpreters initially share nothing,
477 except process state like available memory, open file descriptors
478 and such. The global interpreter lock is also shared by all
479 threads, regardless of to which interpreter they belong.
480\end{ctypedesc}
481
482\begin{ctypedesc}{PyThreadState}
483 This data structure represents the state of a single thread. The
484 only public data member is \ctype{PyInterpreterState
485 *}\member{interp}, which points to this thread's interpreter state.
486\end{ctypedesc}
487
488\begin{cfuncdesc}{void}{PyEval_InitThreads}{}
489 Initialize and acquire the global interpreter lock. It should be
490 called in the main thread before creating a second thread or
491 engaging in any other thread operations such as
492 \cfunction{PyEval_ReleaseLock()}\ttindex{PyEval_ReleaseLock()} or
493 \code{PyEval_ReleaseThread(\var{tstate})}\ttindex{PyEval_ReleaseThread()}.
494 It is not needed before calling
495 \cfunction{PyEval_SaveThread()}\ttindex{PyEval_SaveThread()} or
496 \cfunction{PyEval_RestoreThread()}\ttindex{PyEval_RestoreThread()}.
497
498 This is a no-op when called for a second time. It is safe to call
499 this function before calling
500 \cfunction{Py_Initialize()}\ttindex{Py_Initialize()}.
501
502 When only the main thread exists, no lock operations are needed.
503 This is a common situation (most Python programs do not use
504 threads), and the lock operations slow the interpreter down a bit.
505 Therefore, the lock is not created initially. This situation is
506 equivalent to having acquired the lock: when there is only a single
507 thread, all object accesses are safe. Therefore, when this function
508 initializes the lock, it also acquires it. Before the Python
509 \module{thread}\refbimodindex{thread} module creates a new thread,
510 knowing that either it has the lock or the lock hasn't been created
511 yet, it calls \cfunction{PyEval_InitThreads()}. When this call
512 returns, it is guaranteed that the lock has been created and that it
513 has acquired it.
514
515 It is \strong{not} safe to call this function when it is unknown
516 which thread (if any) currently has the global interpreter lock.
517
518 This function is not available when thread support is disabled at
519 compile time.
520\end{cfuncdesc}
521
522\begin{cfuncdesc}{void}{PyEval_AcquireLock}{}
523 Acquire the global interpreter lock. The lock must have been
524 created earlier. If this thread already has the lock, a deadlock
525 ensues. This function is not available when thread support is
526 disabled at compile time.
527\end{cfuncdesc}
528
529\begin{cfuncdesc}{void}{PyEval_ReleaseLock}{}
530 Release the global interpreter lock. The lock must have been
531 created earlier. This function is not available when thread support
532 is disabled at compile time.
533\end{cfuncdesc}
534
535\begin{cfuncdesc}{void}{PyEval_AcquireThread}{PyThreadState *tstate}
536 Acquire the global interpreter lock and then set the current thread
537 state to \var{tstate}, which should not be \NULL. The lock must
538 have been created earlier. If this thread already has the lock,
539 deadlock ensues. This function is not available when thread support
540 is disabled at compile time.
541\end{cfuncdesc}
542
543\begin{cfuncdesc}{void}{PyEval_ReleaseThread}{PyThreadState *tstate}
544 Reset the current thread state to \NULL{} and release the global
545 interpreter lock. The lock must have been created earlier and must
546 be held by the current thread. The \var{tstate} argument, which
547 must not be \NULL, is only used to check that it represents the
548 current thread state --- if it isn't, a fatal error is reported.
549 This function is not available when thread support is disabled at
550 compile time.
551\end{cfuncdesc}
552
553\begin{cfuncdesc}{PyThreadState*}{PyEval_SaveThread}{}
554 Release the interpreter lock (if it has been created and thread
555 support is enabled) and reset the thread state to \NULL, returning
556 the previous thread state (which is not \NULL). If the lock has
557 been created, the current thread must have acquired it. (This
558 function is available even when thread support is disabled at
559 compile time.)
560\end{cfuncdesc}
561
562\begin{cfuncdesc}{void}{PyEval_RestoreThread}{PyThreadState *tstate}
563 Acquire the interpreter lock (if it has been created and thread
564 support is enabled) and set the thread state to \var{tstate}, which
565 must not be \NULL. If the lock has been created, the current thread
566 must not have acquired it, otherwise deadlock ensues. (This
567 function is available even when thread support is disabled at
568 compile time.)
569\end{cfuncdesc}
570
571The following macros are normally used without a trailing semicolon;
572look for example usage in the Python source distribution.
573
574\begin{csimplemacrodesc}{Py_BEGIN_ALLOW_THREADS}
575 This macro expands to
576 \samp{\{ PyThreadState *_save; _save = PyEval_SaveThread();}.
577 Note that it contains an opening brace; it must be matched with a
Fred Drake375e3022002-04-09 21:09:42 +0000578 following \csimplemacro{Py_END_ALLOW_THREADS} macro. See above for
579 further discussion of this macro. It is a no-op when thread support
580 is disabled at compile time.
Fred Drake3adf79e2001-10-12 19:01:43 +0000581\end{csimplemacrodesc}
582
583\begin{csimplemacrodesc}{Py_END_ALLOW_THREADS}
584 This macro expands to \samp{PyEval_RestoreThread(_save); \}}.
585 Note that it contains a closing brace; it must be matched with an
Fred Drake375e3022002-04-09 21:09:42 +0000586 earlier \csimplemacro{Py_BEGIN_ALLOW_THREADS} macro. See above for
587 further discussion of this macro. It is a no-op when thread support
588 is disabled at compile time.
Fred Drake3adf79e2001-10-12 19:01:43 +0000589\end{csimplemacrodesc}
590
591\begin{csimplemacrodesc}{Py_BLOCK_THREADS}
592 This macro expands to \samp{PyEval_RestoreThread(_save);}: it is
Fred Drake375e3022002-04-09 21:09:42 +0000593 equivalent to \csimplemacro{Py_END_ALLOW_THREADS} without the
594 closing brace. It is a no-op when thread support is disabled at
595 compile time.
Fred Drake3adf79e2001-10-12 19:01:43 +0000596\end{csimplemacrodesc}
597
598\begin{csimplemacrodesc}{Py_UNBLOCK_THREADS}
599 This macro expands to \samp{_save = PyEval_SaveThread();}: it is
Fred Drake375e3022002-04-09 21:09:42 +0000600 equivalent to \csimplemacro{Py_BEGIN_ALLOW_THREADS} without the
601 opening brace and variable declaration. It is a no-op when thread
602 support is disabled at compile time.
Fred Drake3adf79e2001-10-12 19:01:43 +0000603\end{csimplemacrodesc}
604
605All of the following functions are only available when thread support
606is enabled at compile time, and must be called only when the
607interpreter lock has been created.
608
609\begin{cfuncdesc}{PyInterpreterState*}{PyInterpreterState_New}{}
610 Create a new interpreter state object. The interpreter lock need
611 not be held, but may be held if it is necessary to serialize calls
612 to this function.
613\end{cfuncdesc}
614
615\begin{cfuncdesc}{void}{PyInterpreterState_Clear}{PyInterpreterState *interp}
616 Reset all information in an interpreter state object. The
617 interpreter lock must be held.
618\end{cfuncdesc}
619
620\begin{cfuncdesc}{void}{PyInterpreterState_Delete}{PyInterpreterState *interp}
621 Destroy an interpreter state object. The interpreter lock need not
622 be held. The interpreter state must have been reset with a previous
623 call to \cfunction{PyInterpreterState_Clear()}.
624\end{cfuncdesc}
625
626\begin{cfuncdesc}{PyThreadState*}{PyThreadState_New}{PyInterpreterState *interp}
627 Create a new thread state object belonging to the given interpreter
628 object. The interpreter lock need not be held, but may be held if
629 it is necessary to serialize calls to this function.
630\end{cfuncdesc}
631
632\begin{cfuncdesc}{void}{PyThreadState_Clear}{PyThreadState *tstate}
633 Reset all information in a thread state object. The interpreter lock
634 must be held.
635\end{cfuncdesc}
636
637\begin{cfuncdesc}{void}{PyThreadState_Delete}{PyThreadState *tstate}
638 Destroy a thread state object. The interpreter lock need not be
639 held. The thread state must have been reset with a previous call to
640 \cfunction{PyThreadState_Clear()}.
641\end{cfuncdesc}
642
643\begin{cfuncdesc}{PyThreadState*}{PyThreadState_Get}{}
644 Return the current thread state. The interpreter lock must be
645 held. When the current thread state is \NULL, this issues a fatal
646 error (so that the caller needn't check for \NULL).
647\end{cfuncdesc}
648
649\begin{cfuncdesc}{PyThreadState*}{PyThreadState_Swap}{PyThreadState *tstate}
650 Swap the current thread state with the thread state given by the
651 argument \var{tstate}, which may be \NULL. The interpreter lock
652 must be held.
653\end{cfuncdesc}
654
655\begin{cfuncdesc}{PyObject*}{PyThreadState_GetDict}{}
656 Return a dictionary in which extensions can store thread-specific
657 state information. Each extension should use a unique key to use to
658 store state in the dictionary. If this function returns \NULL, an
659 exception has been raised and the caller should allow it to
660 propogate.
661\end{cfuncdesc}
662
663
664\section{Profiling and Tracing \label{profiling}}
665
666\sectionauthor{Fred L. Drake, Jr.}{fdrake@acm.org}
667
668The Python interpreter provides some low-level support for attaching
669profiling and execution tracing facilities. These are used for
670profiling, debugging, and coverage analysis tools.
671
672Starting with Python 2.2, the implementation of this facility was
673substantially revised, and an interface from C was added. This C
674interface allows the profiling or tracing code to avoid the overhead
675of calling through Python-level callable objects, making a direct C
676function call instead. The essential attributes of the facility have
677not changed; the interface allows trace functions to be installed
678per-thread, and the basic events reported to the trace function are
679the same as had been reported to the Python-level trace functions in
680previous versions.
681
682\begin{ctypedesc}[Py_tracefunc]{int (*Py_tracefunc)(PyObject *obj,
683 PyFrameObject *frame, int what,
684 PyObject *arg)}
685 The type of the trace function registered using
686 \cfunction{PyEval_SetProfile()} and \cfunction{PyEval_SetTrace()}.
687 The first parameter is the object passed to the registration
688 function as \var{obj}, \var{frame} is the frame object to which the
689 event pertains, \var{what} is one of the constants
690 \constant{PyTrace_CALL}, \constant{PyTrace_EXCEPT},
691 \constant{PyTrace_LINE} or \constant{PyTrace_RETURN}, and \var{arg}
692 depends on the value of \var{what}:
693
694 \begin{tableii}{l|l}{constant}{Value of \var{what}}{Meaning of \var{arg}}
695 \lineii{PyTrace_CALL}{Always \NULL.}
696 \lineii{PyTrace_EXCEPT}{Exception information as returned by
697 \function{sys.exc_info()}.}
698 \lineii{PyTrace_LINE}{Always \NULL.}
699 \lineii{PyTrace_RETURN}{Value being returned to the caller.}
700 \end{tableii}
701\end{ctypedesc}
702
703\begin{cvardesc}{int}{PyTrace_CALL}
704 The value of the \var{what} parameter to a \ctype{Py_tracefunc}
705 function when a new call to a function or method is being reported,
706 or a new entry into a generator. Note that the creation of the
707 iterator for a generator function is not reported as there is no
708 control transfer to the Python bytecode in the corresponding frame.
709\end{cvardesc}
710
711\begin{cvardesc}{int}{PyTrace_EXCEPT}
712 The value of the \var{what} parameter to a \ctype{Py_tracefunc}
Fred Drake5bf1ecd2001-10-16 19:23:55 +0000713 function when an exception has been raised. The callback function
714 is called with this value for \var{what} when after any bytecode is
715 processed after which the exception becomes set within the frame
716 being executed. The effect of this is that as exception propogation
717 causes the Python stack to unwind, the callback is called upon
718 return to each frame as the exception propogates. Only trace
719 functions receives these events; they are not needed by the
720 profiler.
Fred Drake3adf79e2001-10-12 19:01:43 +0000721\end{cvardesc}
722
723\begin{cvardesc}{int}{PyTrace_LINE}
724 The value passed as the \var{what} parameter to a trace function
725 (but not a profiling function) when a line-number event is being
726 reported.
727\end{cvardesc}
728
729\begin{cvardesc}{int}{PyTrace_RETURN}
730 The value for the \var{what} parameter to \ctype{Py_tracefunc}
731 functions when a call is returning without propogating an exception.
732\end{cvardesc}
733
734\begin{cfuncdesc}{void}{PyEval_SetProfile}{Py_tracefunc func, PyObject *obj}
735 Set the profiler function to \var{func}. The \var{obj} parameter is
736 passed to the function as its first parameter, and may be any Python
737 object, or \NULL. If the profile function needs to maintain state,
738 using a different value for \var{obj} for each thread provides a
739 convenient and thread-safe place to store it. The profile function
740 is called for all monitored events except the line-number events.
741\end{cfuncdesc}
742
743\begin{cfuncdesc}{void}{PyEval_SetTrace}{Py_tracefunc func, PyObject *obj}
744 Set the the tracing function to \var{func}. This is similar to
745 \cfunction{PyEval_SetProfile()}, except the tracing function does
746 receive line-number events.
747\end{cfuncdesc}
748
749
750\section{Advanced Debugger Support \label{advanced-debugging}}
751\sectionauthor{Fred L. Drake, Jr.}{fdrake@acm.org}
752
753These functions are only intended to be used by advanced debugging
754tools.
755
756\begin{cfuncdesc}{PyInterpreterState*}{PyInterpreterState_Head}{}
757 Return the interpreter state object at the head of the list of all
758 such objects.
759 \versionadded{2.2}
760\end{cfuncdesc}
761
762\begin{cfuncdesc}{PyInterpreterState*}{PyInterpreterState_Next}{PyInterpreterState *interp}
763 Return the next interpreter state object after \var{interp} from the
764 list of all such objects.
765 \versionadded{2.2}
766\end{cfuncdesc}
767
768\begin{cfuncdesc}{PyThreadState *}{PyInterpreterState_ThreadHead}{PyInterpreterState *interp}
769 Return the a pointer to the first \ctype{PyThreadState} object in
770 the list of threads associated with the interpreter \var{interp}.
771 \versionadded{2.2}
772\end{cfuncdesc}
773
774\begin{cfuncdesc}{PyThreadState*}{PyThreadState_Next}{PyThreadState *tstate}
775 Return the next thread state object after \var{tstate} from the list
776 of all such objects belonging to the same \ctype{PyInterpreterState}
777 object.
778 \versionadded{2.2}
779\end{cfuncdesc}