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