Changeset 391 for python/trunk/Doc/c-api/init.rst
- Timestamp:
- Mar 19, 2014, 11:31:01 PM (11 years ago)
- Location:
- python/trunk
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
python/trunk
-
Property svn:mergeinfo
set to
/python/vendor/Python-2.7.6 merged eligible /python/vendor/current merged eligible
-
Property svn:mergeinfo
set to
-
python/trunk/Doc/c-api/init.rst
r2 r391 9 9 10 10 11 .. cfunction:: void Py_Initialize() 11 Initializing and finalizing the interpreter 12 =========================================== 13 14 15 .. c:function:: void Py_Initialize() 12 16 13 17 .. index:: … … 23 27 triple: module; search; path 24 28 single: PySys_SetArgv() 29 single: PySys_SetArgvEx() 25 30 single: Py_Finalize() 26 31 27 32 Initialize the Python interpreter. In an application embedding Python, this 28 33 should be called before using any other Python/C API functions; with the 29 exception of :c func:`Py_SetProgramName`, :cfunc:`PyEval_InitThreads`,30 :c func:`PyEval_ReleaseLock`, and :cfunc:`PyEval_AcquireLock`. This initializes34 exception of :c:func:`Py_SetProgramName`, :c:func:`Py_SetPythonHome`, :c:func:`PyEval_InitThreads`, 35 :c:func:`PyEval_ReleaseLock`, and :c:func:`PyEval_AcquireLock`. This initializes 31 36 the table of loaded modules (``sys.modules``), and creates the fundamental 32 37 modules :mod:`__builtin__`, :mod:`__main__` and :mod:`sys`. It also initializes 33 38 the module search path (``sys.path``). It does not set ``sys.argv``; use 34 :c func:`PySys_SetArgv` for that. This is a no-op when called for a second time35 (without calling :c func:`Py_Finalize` first). There is no return value; it is a39 :c:func:`PySys_SetArgvEx` for that. This is a no-op when called for a second time 40 (without calling :c:func:`Py_Finalize` first). There is no return value; it is a 36 41 fatal error if the initialization fails. 37 42 38 43 39 .. c function:: void Py_InitializeEx(int initsigs)40 41 This function works like :c func:`Py_Initialize` if *initsigs* is 1. If44 .. c:function:: void Py_InitializeEx(int initsigs) 45 46 This function works like :c:func:`Py_Initialize` if *initsigs* is 1. If 42 47 *initsigs* is 0, it skips initialization registration of signal handlers, which 43 48 might be useful when Python is embedded. … … 46 51 47 52 48 .. c function:: int Py_IsInitialized()53 .. c:function:: int Py_IsInitialized() 49 54 50 55 Return true (nonzero) when the Python interpreter has been initialized, false 51 (zero) if not. After :c func:`Py_Finalize` is called, this returns false until52 :c func:`Py_Initialize` is called again.53 54 55 .. c function:: void Py_Finalize()56 57 Undo all initializations made by :c func:`Py_Initialize` and subsequent use of56 (zero) if not. After :c:func:`Py_Finalize` is called, this returns false until 57 :c:func:`Py_Initialize` is called again. 58 59 60 .. c:function:: void Py_Finalize() 61 62 Undo all initializations made by :c:func:`Py_Initialize` and subsequent use of 58 63 Python/C API functions, and destroy all sub-interpreters (see 59 :c func:`Py_NewInterpreter` below) that were created and not yet destroyed since60 the last call to :c func:`Py_Initialize`. Ideally, this frees all memory64 :c:func:`Py_NewInterpreter` below) that were created and not yet destroyed since 65 the last call to :c:func:`Py_Initialize`. Ideally, this frees all memory 61 66 allocated by the Python interpreter. This is a no-op when called for a second 62 time (without calling :c func:`Py_Initialize` again first). There is no return67 time (without calling :c:func:`Py_Initialize` again first). There is no return 63 68 value; errors during finalization are ignored. 64 69 … … 79 84 freed. Some memory allocated by extension modules may not be freed. Some 80 85 extensions may not work properly if their initialization routine is called more 81 than once; this can happen if an application calls :cfunc:`Py_Initialize` and 82 :cfunc:`Py_Finalize` more than once. 83 84 85 .. cfunction:: PyThreadState* Py_NewInterpreter() 86 than once; this can happen if an application calls :c:func:`Py_Initialize` and 87 :c:func:`Py_Finalize` more than once. 88 89 90 Process-wide parameters 91 ======================= 92 93 94 .. c:function:: void Py_SetProgramName(char *name) 86 95 87 96 .. index:: 88 module: __builtin__ 97 single: Py_Initialize() 98 single: main() 99 single: Py_GetPath() 100 101 This function should be called before :c:func:`Py_Initialize` is called for 102 the first time, if it is called at all. It tells the interpreter the value 103 of the ``argv[0]`` argument to the :c:func:`main` function of the program. 104 This is used by :c:func:`Py_GetPath` and some other functions below to find 105 the Python run-time libraries relative to the interpreter executable. The 106 default value is ``'python'``. The argument should point to a 107 zero-terminated character string in static storage whose contents will not 108 change for the duration of the program's execution. No code in the Python 109 interpreter will change the contents of this storage. 110 111 112 .. c:function:: char* Py_GetProgramName() 113 114 .. index:: single: Py_SetProgramName() 115 116 Return the program name set with :c:func:`Py_SetProgramName`, or the default. 117 The returned string points into static storage; the caller should not modify its 118 value. 119 120 121 .. c:function:: char* Py_GetPrefix() 122 123 Return the *prefix* for installed platform-independent files. This is derived 124 through a number of complicated rules from the program name set with 125 :c:func:`Py_SetProgramName` and some environment variables; for example, if the 126 program name is ``'/usr/local/bin/python'``, the prefix is ``'/usr/local'``. The 127 returned string points into static storage; the caller should not modify its 128 value. This corresponds to the :makevar:`prefix` variable in the top-level 129 :file:`Makefile` and the ``--prefix`` argument to the :program:`configure` 130 script at build time. The value is available to Python code as ``sys.prefix``. 131 It is only useful on Unix. See also the next function. 132 133 134 .. c:function:: char* Py_GetExecPrefix() 135 136 Return the *exec-prefix* for installed platform-*dependent* files. This is 137 derived through a number of complicated rules from the program name set with 138 :c:func:`Py_SetProgramName` and some environment variables; for example, if the 139 program name is ``'/usr/local/bin/python'``, the exec-prefix is 140 ``'/usr/local'``. The returned string points into static storage; the caller 141 should not modify its value. This corresponds to the :makevar:`exec_prefix` 142 variable in the top-level :file:`Makefile` and the ``--exec-prefix`` 143 argument to the :program:`configure` script at build time. The value is 144 available to Python code as ``sys.exec_prefix``. It is only useful on Unix. 145 146 Background: The exec-prefix differs from the prefix when platform dependent 147 files (such as executables and shared libraries) are installed in a different 148 directory tree. In a typical installation, platform dependent files may be 149 installed in the :file:`/usr/local/plat` subtree while platform independent may 150 be installed in :file:`/usr/local`. 151 152 Generally speaking, a platform is a combination of hardware and software 153 families, e.g. Sparc machines running the Solaris 2.x operating system are 154 considered the same platform, but Intel machines running Solaris 2.x are another 155 platform, and Intel machines running Linux are yet another platform. Different 156 major revisions of the same operating system generally also form different 157 platforms. Non-Unix operating systems are a different story; the installation 158 strategies on those systems are so different that the prefix and exec-prefix are 159 meaningless, and set to the empty string. Note that compiled Python bytecode 160 files are platform independent (but not independent from the Python version by 161 which they were compiled!). 162 163 System administrators will know how to configure the :program:`mount` or 164 :program:`automount` programs to share :file:`/usr/local` between platforms 165 while having :file:`/usr/local/plat` be a different filesystem for each 166 platform. 167 168 169 .. c:function:: char* Py_GetProgramFullPath() 170 171 .. index:: 172 single: Py_SetProgramName() 173 single: executable (in module sys) 174 175 Return the full program name of the Python executable; this is computed as a 176 side-effect of deriving the default module search path from the program name 177 (set by :c:func:`Py_SetProgramName` above). The returned string points into 178 static storage; the caller should not modify its value. The value is available 179 to Python code as ``sys.executable``. 180 181 182 .. c:function:: char* Py_GetPath() 183 184 .. index:: 185 triple: module; search; path 186 single: path (in module sys) 187 188 Return the default module search path; this is computed from the program name 189 (set by :c:func:`Py_SetProgramName` above) and some environment variables. 190 The returned string consists of a series of directory names separated by a 191 platform dependent delimiter character. The delimiter character is ``':'`` 192 on Unix and Mac OS X, ``';'`` on Windows. The returned string points into 193 static storage; the caller should not modify its value. The list 194 :data:`sys.path` is initialized with this value on interpreter startup; it 195 can be (and usually is) modified later to change the search path for loading 196 modules. 197 198 .. XXX should give the exact rules 199 200 201 .. c:function:: const char* Py_GetVersion() 202 203 Return the version of this Python interpreter. This is a string that looks 204 something like :: 205 206 "1.5 (#67, Dec 31 1997, 22:34:28) [GCC 2.7.2.2]" 207 208 .. index:: single: version (in module sys) 209 210 The first word (up to the first space character) is the current Python version; 211 the first three characters are the major and minor version separated by a 212 period. The returned string points into static storage; the caller should not 213 modify its value. The value is available to Python code as ``sys.version``. 214 215 216 .. c:function:: const char* Py_GetPlatform() 217 218 .. index:: single: platform (in module sys) 219 220 Return the platform identifier for the current platform. On Unix, this is 221 formed from the "official" name of the operating system, converted to lower 222 case, followed by the major revision number; e.g., for Solaris 2.x, which is 223 also known as SunOS 5.x, the value is ``'sunos5'``. On Mac OS X, it is 224 ``'darwin'``. On Windows, it is ``'win'``. The returned string points into 225 static storage; the caller should not modify its value. The value is available 226 to Python code as ``sys.platform``. 227 228 229 .. c:function:: const char* Py_GetCopyright() 230 231 Return the official copyright string for the current Python version, for example 232 233 ``'Copyright 1991-1995 Stichting Mathematisch Centrum, Amsterdam'`` 234 235 .. index:: single: copyright (in module sys) 236 237 The returned string points into static storage; the caller should not modify its 238 value. The value is available to Python code as ``sys.copyright``. 239 240 241 .. c:function:: const char* Py_GetCompiler() 242 243 Return an indication of the compiler used to build the current Python version, 244 in square brackets, for example:: 245 246 "[GCC 2.7.2.2]" 247 248 .. index:: single: version (in module sys) 249 250 The returned string points into static storage; the caller should not modify its 251 value. The value is available to Python code as part of the variable 252 ``sys.version``. 253 254 255 .. c:function:: const char* Py_GetBuildInfo() 256 257 Return information about the sequence number and build date and time of the 258 current Python interpreter instance, for example :: 259 260 "#67, Aug 1 1997, 22:34:28" 261 262 .. index:: single: version (in module sys) 263 264 The returned string points into static storage; the caller should not modify its 265 value. The value is available to Python code as part of the variable 266 ``sys.version``. 267 268 269 .. c:function:: void PySys_SetArgvEx(int argc, char **argv, int updatepath) 270 271 .. index:: 272 single: main() 273 single: Py_FatalError() 274 single: argv (in module sys) 275 276 Set :data:`sys.argv` based on *argc* and *argv*. These parameters are 277 similar to those passed to the program's :c:func:`main` function with the 278 difference that the first entry should refer to the script file to be 279 executed rather than the executable hosting the Python interpreter. If there 280 isn't a script that will be run, the first entry in *argv* can be an empty 281 string. If this function fails to initialize :data:`sys.argv`, a fatal 282 condition is signalled using :c:func:`Py_FatalError`. 283 284 If *updatepath* is zero, this is all the function does. If *updatepath* 285 is non-zero, the function also modifies :data:`sys.path` according to the 286 following algorithm: 287 288 - If the name of an existing script is passed in ``argv[0]``, the absolute 289 path of the directory where the script is located is prepended to 290 :data:`sys.path`. 291 - Otherwise (that is, if *argc* is 0 or ``argv[0]`` doesn't point 292 to an existing file name), an empty string is prepended to 293 :data:`sys.path`, which is the same as prepending the current working 294 directory (``"."``). 295 296 .. note:: 297 It is recommended that applications embedding the Python interpreter 298 for purposes other than executing a single script pass 0 as *updatepath*, 299 and update :data:`sys.path` themselves if desired. 300 See `CVE-2008-5983 <http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2008-5983>`_. 301 302 On versions before 2.6.6, you can achieve the same effect by manually 303 popping the first :data:`sys.path` element after having called 304 :c:func:`PySys_SetArgv`, for example using:: 305 306 PyRun_SimpleString("import sys; sys.path.pop(0)\n"); 307 308 .. versionadded:: 2.6.6 309 310 .. XXX impl. doesn't seem consistent in allowing 0/NULL for the params; 311 check w/ Guido. 312 313 314 .. c:function:: void PySys_SetArgv(int argc, char **argv) 315 316 This function works like :c:func:`PySys_SetArgvEx` with *updatepath* set to 1. 317 318 319 .. c:function:: void Py_SetPythonHome(char *home) 320 321 Set the default "home" directory, that is, the location of the standard 322 Python libraries. See :envvar:`PYTHONHOME` for the meaning of the 323 argument string. 324 325 The argument should point to a zero-terminated character string in static 326 storage whose contents will not change for the duration of the program's 327 execution. No code in the Python interpreter will change the contents of 328 this storage. 329 330 331 .. c:function:: char* Py_GetPythonHome() 332 333 Return the default "home", that is, the value set by a previous call to 334 :c:func:`Py_SetPythonHome`, or the value of the :envvar:`PYTHONHOME` 335 environment variable if it is set. 336 337 338 .. _threads: 339 340 Thread State and the Global Interpreter Lock 341 ============================================ 342 343 .. index:: 344 single: GIL 345 single: global interpreter lock 346 single: interpreter lock 347 single: lock, interpreter 348 349 The Python interpreter is not fully thread-safe. In order to support 350 multi-threaded Python programs, there's a global lock, called the :term:`global 351 interpreter lock` or :term:`GIL`, that must be held by the current thread before 352 it can safely access Python objects. Without the lock, even the simplest 353 operations could cause problems in a multi-threaded program: for example, when 354 two threads simultaneously increment the reference count of the same object, the 355 reference count could end up being incremented only once instead of twice. 356 357 .. index:: single: setcheckinterval() (in module sys) 358 359 Therefore, the rule exists that only the thread that has acquired the 360 :term:`GIL` may operate on Python objects or call Python/C API functions. 361 In order to emulate concurrency of execution, the interpreter regularly 362 tries to switch threads (see :func:`sys.setcheckinterval`). The lock is also 363 released around potentially blocking I/O operations like reading or writing 364 a file, so that other Python threads can run in the meantime. 365 366 .. index:: 367 single: PyThreadState 368 single: PyThreadState 369 370 The Python interpreter keeps some thread-specific bookkeeping information 371 inside a data structure called :c:type:`PyThreadState`. There's also one 372 global variable pointing to the current :c:type:`PyThreadState`: it can 373 be retrieved using :c:func:`PyThreadState_Get`. 374 375 Releasing the GIL from extension code 376 ------------------------------------- 377 378 Most extension code manipulating the :term:`GIL` has the following simple 379 structure:: 380 381 Save the thread state in a local variable. 382 Release the global interpreter lock. 383 ... Do some blocking I/O operation ... 384 Reacquire the global interpreter lock. 385 Restore the thread state from the local variable. 386 387 This is so common that a pair of macros exists to simplify it:: 388 389 Py_BEGIN_ALLOW_THREADS 390 ... Do some blocking I/O operation ... 391 Py_END_ALLOW_THREADS 392 393 .. index:: 394 single: Py_BEGIN_ALLOW_THREADS 395 single: Py_END_ALLOW_THREADS 396 397 The :c:macro:`Py_BEGIN_ALLOW_THREADS` macro opens a new block and declares a 398 hidden local variable; the :c:macro:`Py_END_ALLOW_THREADS` macro closes the 399 block. These two macros are still available when Python is compiled without 400 thread support (they simply have an empty expansion). 401 402 When thread support is enabled, the block above expands to the following code:: 403 404 PyThreadState *_save; 405 406 _save = PyEval_SaveThread(); 407 ...Do some blocking I/O operation... 408 PyEval_RestoreThread(_save); 409 410 .. index:: 411 single: PyEval_RestoreThread() 412 single: PyEval_SaveThread() 413 414 Here is how these functions work: the global interpreter lock is used to protect the pointer to the 415 current thread state. When releasing the lock and saving the thread state, 416 the current thread state pointer must be retrieved before the lock is released 417 (since another thread could immediately acquire the lock and store its own thread 418 state in the global variable). Conversely, when acquiring the lock and restoring 419 the thread state, the lock must be acquired before storing the thread state 420 pointer. 421 422 .. note:: 423 Calling system I/O functions is the most common use case for releasing 424 the GIL, but it can also be useful before calling long-running computations 425 which don't need access to Python objects, such as compression or 426 cryptographic functions operating over memory buffers. For example, the 427 standard :mod:`zlib` and :mod:`hashlib` modules release the GIL when 428 compressing or hashing data. 429 430 431 .. _gilstate: 432 433 Non-Python created threads 434 -------------------------- 435 436 When threads are created using the dedicated Python APIs (such as the 437 :mod:`threading` module), a thread state is automatically associated to them 438 and the code showed above is therefore correct. However, when threads are 439 created from C (for example by a third-party library with its own thread 440 management), they don't hold the GIL, nor is there a thread state structure 441 for them. 442 443 If you need to call Python code from these threads (often this will be part 444 of a callback API provided by the aforementioned third-party library), 445 you must first register these threads with the interpreter by 446 creating a thread state data structure, then acquiring the GIL, and finally 447 storing their thread state pointer, before you can start using the Python/C 448 API. When you are done, you should reset the thread state pointer, release 449 the GIL, and finally free the thread state data structure. 450 451 The :c:func:`PyGILState_Ensure` and :c:func:`PyGILState_Release` functions do 452 all of the above automatically. The typical idiom for calling into Python 453 from a C thread is:: 454 455 PyGILState_STATE gstate; 456 gstate = PyGILState_Ensure(); 457 458 /* Perform Python actions here. */ 459 result = CallSomeFunction(); 460 /* evaluate result or handle exception */ 461 462 /* Release the thread. No Python API allowed beyond this point. */ 463 PyGILState_Release(gstate); 464 465 Note that the :c:func:`PyGILState_\*` functions assume there is only one global 466 interpreter (created automatically by :c:func:`Py_Initialize`). Python 467 supports the creation of additional interpreters (using 468 :c:func:`Py_NewInterpreter`), but mixing multiple interpreters and the 469 :c:func:`PyGILState_\*` API is unsupported. 470 471 Another important thing to note about threads is their behaviour in the face 472 of the C :c:func:`fork` call. On most systems with :c:func:`fork`, after a 473 process forks only the thread that issued the fork will exist. That also 474 means any locks held by other threads will never be released. Python solves 475 this for :func:`os.fork` by acquiring the locks it uses internally before 476 the fork, and releasing them afterwards. In addition, it resets any 477 :ref:`lock-objects` in the child. When extending or embedding Python, there 478 is no way to inform Python of additional (non-Python) locks that need to be 479 acquired before or reset after a fork. OS facilities such as 480 :c:func:`pthread_atfork` would need to be used to accomplish the same thing. 481 Additionally, when extending or embedding Python, calling :c:func:`fork` 482 directly rather than through :func:`os.fork` (and returning to or calling 483 into Python) may result in a deadlock by one of Python's internal locks 484 being held by a thread that is defunct after the fork. 485 :c:func:`PyOS_AfterFork` tries to reset the necessary locks, but is not 486 always able to. 487 488 489 High-level API 490 -------------- 491 492 These are the most commonly used types and functions when writing C extension 493 code, or when embedding the Python interpreter: 494 495 .. c:type:: PyInterpreterState 496 497 This data structure represents the state shared by a number of cooperating 498 threads. Threads belonging to the same interpreter share their module 499 administration and a few other internal items. There are no public members in 500 this structure. 501 502 Threads belonging to different interpreters initially share nothing, except 503 process state like available memory, open file descriptors and such. The global 504 interpreter lock is also shared by all threads, regardless of to which 505 interpreter they belong. 506 507 508 .. c:type:: PyThreadState 509 510 This data structure represents the state of a single thread. The only public 511 data member is :c:type:`PyInterpreterState \*`:attr:`interp`, which points to 512 this thread's interpreter state. 513 514 515 .. c:function:: void PyEval_InitThreads() 516 517 .. index:: 518 single: PyEval_ReleaseLock() 519 single: PyEval_ReleaseThread() 520 single: PyEval_SaveThread() 521 single: PyEval_RestoreThread() 522 523 Initialize and acquire the global interpreter lock. It should be called in the 524 main thread before creating a second thread or engaging in any other thread 525 operations such as :c:func:`PyEval_ReleaseLock` or 526 ``PyEval_ReleaseThread(tstate)``. It is not needed before calling 527 :c:func:`PyEval_SaveThread` or :c:func:`PyEval_RestoreThread`. 528 529 .. index:: single: Py_Initialize() 530 531 This is a no-op when called for a second time. It is safe to call this function 532 before calling :c:func:`Py_Initialize`. 533 534 .. index:: module: thread 535 536 .. note:: 537 When only the main thread exists, no GIL operations are needed. This is a 538 common situation (most Python programs do not use threads), and the lock 539 operations slow the interpreter down a bit. Therefore, the lock is not 540 created initially. This situation is equivalent to having acquired the lock: 541 when there is only a single thread, all object accesses are safe. Therefore, 542 when this function initializes the global interpreter lock, it also acquires 543 it. Before the Python :mod:`_thread` module creates a new thread, knowing 544 that either it has the lock or the lock hasn't been created yet, it calls 545 :c:func:`PyEval_InitThreads`. When this call returns, it is guaranteed that 546 the lock has been created and that the calling thread has acquired it. 547 548 It is **not** safe to call this function when it is unknown which thread (if 549 any) currently has the global interpreter lock. 550 551 This function is not available when thread support is disabled at compile time. 552 553 554 .. c:function:: int PyEval_ThreadsInitialized() 555 556 Returns a non-zero value if :c:func:`PyEval_InitThreads` has been called. This 557 function can be called without holding the GIL, and therefore can be used to 558 avoid calls to the locking API when running single-threaded. This function is 559 not available when thread support is disabled at compile time. 560 561 .. versionadded:: 2.4 562 563 564 .. c:function:: PyThreadState* PyEval_SaveThread() 565 566 Release the global interpreter lock (if it has been created and thread 567 support is enabled) and reset the thread state to *NULL*, returning the 568 previous thread state (which is not *NULL*). If the lock has been created, 569 the current thread must have acquired it. (This function is available even 570 when thread support is disabled at compile time.) 571 572 573 .. c:function:: void PyEval_RestoreThread(PyThreadState *tstate) 574 575 Acquire the global interpreter lock (if it has been created and thread 576 support is enabled) and set the thread state to *tstate*, which must not be 577 *NULL*. If the lock has been created, the current thread must not have 578 acquired it, otherwise deadlock ensues. (This function is available even 579 when thread support is disabled at compile time.) 580 581 582 .. c:function:: PyThreadState* PyThreadState_Get() 583 584 Return the current thread state. The global interpreter lock must be held. 585 When the current thread state is *NULL*, this issues a fatal error (so that 586 the caller needn't check for *NULL*). 587 588 589 .. c:function:: PyThreadState* PyThreadState_Swap(PyThreadState *tstate) 590 591 Swap the current thread state with the thread state given by the argument 592 *tstate*, which may be *NULL*. The global interpreter lock must be held 593 and is not released. 594 595 596 .. c:function:: void PyEval_ReInitThreads() 597 598 This function is called from :c:func:`PyOS_AfterFork` to ensure that newly 599 created child processes don't hold locks referring to threads which 600 are not running in the child process. 601 602 603 The following functions use thread-local storage, and are not compatible 604 with sub-interpreters: 605 606 .. c:function:: PyGILState_STATE PyGILState_Ensure() 607 608 Ensure that the current thread is ready to call the Python C API regardless 609 of the current state of Python, or of the global interpreter lock. This may 610 be called as many times as desired by a thread as long as each call is 611 matched with a call to :c:func:`PyGILState_Release`. In general, other 612 thread-related APIs may be used between :c:func:`PyGILState_Ensure` and 613 :c:func:`PyGILState_Release` calls as long as the thread state is restored to 614 its previous state before the Release(). For example, normal usage of the 615 :c:macro:`Py_BEGIN_ALLOW_THREADS` and :c:macro:`Py_END_ALLOW_THREADS` macros is 616 acceptable. 617 618 The return value is an opaque "handle" to the thread state when 619 :c:func:`PyGILState_Ensure` was called, and must be passed to 620 :c:func:`PyGILState_Release` to ensure Python is left in the same state. Even 621 though recursive calls are allowed, these handles *cannot* be shared - each 622 unique call to :c:func:`PyGILState_Ensure` must save the handle for its call 623 to :c:func:`PyGILState_Release`. 624 625 When the function returns, the current thread will hold the GIL and be able 626 to call arbitrary Python code. Failure is a fatal error. 627 628 .. versionadded:: 2.3 629 630 631 .. c:function:: void PyGILState_Release(PyGILState_STATE) 632 633 Release any resources previously acquired. After this call, Python's state will 634 be the same as it was prior to the corresponding :c:func:`PyGILState_Ensure` call 635 (but generally this state will be unknown to the caller, hence the use of the 636 GILState API). 637 638 Every call to :c:func:`PyGILState_Ensure` must be matched by a call to 639 :c:func:`PyGILState_Release` on the same thread. 640 641 .. versionadded:: 2.3 642 643 644 .. c:function:: PyThreadState PyGILState_GetThisThreadState() 645 646 Get the current thread state for this thread. May return ``NULL`` if no 647 GILState API has been used on the current thread. Note that the main thread 648 always has such a thread-state, even if no auto-thread-state call has been 649 made on the main thread. This is mainly a helper/diagnostic function. 650 651 .. versionadded:: 2.3 652 653 654 The following macros are normally used without a trailing semicolon; look for 655 example usage in the Python source distribution. 656 657 658 .. c:macro:: Py_BEGIN_ALLOW_THREADS 659 660 This macro expands to ``{ PyThreadState *_save; _save = PyEval_SaveThread();``. 661 Note that it contains an opening brace; it must be matched with a following 662 :c:macro:`Py_END_ALLOW_THREADS` macro. See above for further discussion of this 663 macro. It is a no-op when thread support is disabled at compile time. 664 665 666 .. c:macro:: Py_END_ALLOW_THREADS 667 668 This macro expands to ``PyEval_RestoreThread(_save); }``. Note that it contains 669 a closing brace; it must be matched with an earlier 670 :c:macro:`Py_BEGIN_ALLOW_THREADS` macro. See above for further discussion of 671 this macro. It is a no-op when thread support is disabled at compile time. 672 673 674 .. c:macro:: Py_BLOCK_THREADS 675 676 This macro expands to ``PyEval_RestoreThread(_save);``: it is equivalent to 677 :c:macro:`Py_END_ALLOW_THREADS` without the closing brace. It is a no-op when 678 thread support is disabled at compile time. 679 680 681 .. c:macro:: Py_UNBLOCK_THREADS 682 683 This macro expands to ``_save = PyEval_SaveThread();``: it is equivalent to 684 :c:macro:`Py_BEGIN_ALLOW_THREADS` without the opening brace and variable 685 declaration. It is a no-op when thread support is disabled at compile time. 686 687 688 Low-level API 689 ------------- 690 691 All of the following functions are only available when thread support is enabled 692 at compile time, and must be called only when the global interpreter lock has 693 been created. 694 695 696 .. c:function:: PyInterpreterState* PyInterpreterState_New() 697 698 Create a new interpreter state object. The global interpreter lock need not 699 be held, but may be held if it is necessary to serialize calls to this 700 function. 701 702 703 .. c:function:: void PyInterpreterState_Clear(PyInterpreterState *interp) 704 705 Reset all information in an interpreter state object. The global interpreter 706 lock must be held. 707 708 709 .. c:function:: void PyInterpreterState_Delete(PyInterpreterState *interp) 710 711 Destroy an interpreter state object. The global interpreter lock need not be 712 held. The interpreter state must have been reset with a previous call to 713 :c:func:`PyInterpreterState_Clear`. 714 715 716 .. c:function:: PyThreadState* PyThreadState_New(PyInterpreterState *interp) 717 718 Create a new thread state object belonging to the given interpreter object. 719 The global interpreter lock need not be held, but may be held if it is 720 necessary to serialize calls to this function. 721 722 723 .. c:function:: void PyThreadState_Clear(PyThreadState *tstate) 724 725 Reset all information in a thread state object. The global interpreter lock 726 must be held. 727 728 729 .. c:function:: void PyThreadState_Delete(PyThreadState *tstate) 730 731 Destroy a thread state object. The global interpreter lock need not be held. 732 The thread state must have been reset with a previous call to 733 :c:func:`PyThreadState_Clear`. 734 735 736 .. c:function:: PyObject* PyThreadState_GetDict() 737 738 Return a dictionary in which extensions can store thread-specific state 739 information. Each extension should use a unique key to use to store state in 740 the dictionary. It is okay to call this function when no current thread state 741 is available. If this function returns *NULL*, no exception has been raised and 742 the caller should assume no current thread state is available. 743 744 .. versionchanged:: 2.3 745 Previously this could only be called when a current thread is active, and *NULL* 746 meant that an exception was raised. 747 748 749 .. c:function:: int PyThreadState_SetAsyncExc(long id, PyObject *exc) 750 751 Asynchronously raise an exception in a thread. The *id* argument is the thread 752 id of the target thread; *exc* is the exception object to be raised. This 753 function does not steal any references to *exc*. To prevent naive misuse, you 754 must write your own C extension to call this. Must be called with the GIL held. 755 Returns the number of thread states modified; this is normally one, but will be 756 zero if the thread id isn't found. If *exc* is :const:`NULL`, the pending 757 exception (if any) for the thread is cleared. This raises no exceptions. 758 759 .. versionadded:: 2.3 760 761 762 .. c:function:: void PyEval_AcquireThread(PyThreadState *tstate) 763 764 Acquire the global interpreter lock and set the current thread state to 765 *tstate*, which should not be *NULL*. The lock must have been created earlier. 766 If this thread already has the lock, deadlock ensues. 767 768 :c:func:`PyEval_RestoreThread` is a higher-level function which is always 769 available (even when thread support isn't enabled or when threads have 770 not been initialized). 771 772 773 .. c:function:: void PyEval_ReleaseThread(PyThreadState *tstate) 774 775 Reset the current thread state to *NULL* and release the global interpreter 776 lock. The lock must have been created earlier and must be held by the current 777 thread. The *tstate* argument, which must not be *NULL*, is only used to check 778 that it represents the current thread state --- if it isn't, a fatal error is 779 reported. 780 781 :c:func:`PyEval_SaveThread` is a higher-level function which is always 782 available (even when thread support isn't enabled or when threads have 783 not been initialized). 784 785 786 .. c:function:: void PyEval_AcquireLock() 787 788 Acquire the global interpreter lock. The lock must have been created earlier. 789 If this thread already has the lock, a deadlock ensues. 790 791 .. warning:: 792 This function does not change the current thread state. Please use 793 :c:func:`PyEval_RestoreThread` or :c:func:`PyEval_AcquireThread` 794 instead. 795 796 797 .. c:function:: void PyEval_ReleaseLock() 798 799 Release the global interpreter lock. The lock must have been created earlier. 800 801 .. warning:: 802 This function does not change the current thread state. Please use 803 :c:func:`PyEval_SaveThread` or :c:func:`PyEval_ReleaseThread` 804 instead. 805 806 807 Sub-interpreter support 808 ======================= 809 810 While in most uses, you will only embed a single Python interpreter, there 811 are cases where you need to create several independent interpreters in the 812 same process and perhaps even in the same thread. Sub-interpreters allow 813 you to do that. You can switch between sub-interpreters using the 814 :c:func:`PyThreadState_Swap` function. You can create and destroy them 815 using the following functions: 816 817 818 .. c:function:: PyThreadState* Py_NewInterpreter() 819 820 .. index:: 821 module: builtins 89 822 module: __main__ 90 823 module: sys … … 96 829 for the execution of Python code. In particular, the new interpreter has 97 830 separate, independent versions of all imported modules, including the 98 fundamental modules :mod:` __builtin__`, :mod:`__main__` and :mod:`sys`. The831 fundamental modules :mod:`builtins`, :mod:`__main__` and :mod:`sys`. The 99 832 table of loaded modules (``sys.modules``) and the module search path 100 833 (``sys.path``) are also separate. The new environment has no ``sys.argv`` 101 834 variable. It has new standard I/O stream file objects ``sys.stdin``, 102 835 ``sys.stdout`` and ``sys.stderr`` (however these refer to the same underlying 103 :ctype:`FILE` structures in the C library).836 file descriptors). 104 837 105 838 The return value points to the first thread state created in the new … … 125 858 not called. Note that this is different from what happens when an extension is 126 859 imported after the interpreter has been completely re-initialized by calling 127 :c func:`Py_Finalize` and :cfunc:`Py_Initialize`; in that case, the extension's860 :c:func:`Py_Finalize` and :c:func:`Py_Initialize`; in that case, the extension's 128 861 ``initmodule`` function *is* called again. 129 862 130 863 .. index:: single: close() (in module os) 131 864 132 **Bugs and caveats:** Because sub-interpreters (and the main interpreter) are 133 part of the same process, the insulation between them isn't perfect --- for 134 example, using low-level file operations like :func:`os.close` they can 135 (accidentally or maliciously) affect each other's open files. Because of the 136 way extensions are shared between (sub-)interpreters, some extensions may not 137 work properly; this is especially likely when the extension makes use of 138 (static) global variables, or when the extension manipulates its module's 139 dictionary after its initialization. It is possible to insert objects created 140 in one sub-interpreter into a namespace of another sub-interpreter; this should 141 be done with great care to avoid sharing user-defined functions, methods, 142 instances or classes between sub-interpreters, since import operations executed 143 by such objects may affect the wrong (sub-)interpreter's dictionary of loaded 144 modules. (XXX This is a hard-to-fix bug that will be addressed in a future 145 release.) 146 147 Also note that the use of this functionality is incompatible with extension 148 modules such as PyObjC and ctypes that use the :cfunc:`PyGILState_\*` APIs (and 149 this is inherent in the way the :cfunc:`PyGILState_\*` functions work). Simple 150 things may work, but confusing behavior will always be near. 151 152 153 .. cfunction:: void Py_EndInterpreter(PyThreadState *tstate) 865 866 .. c:function:: void Py_EndInterpreter(PyThreadState *tstate) 154 867 155 868 .. index:: single: Py_Finalize() … … 160 873 thread states associated with this interpreter are destroyed. (The global 161 874 interpreter lock must be held before calling this function and is still held 162 when it returns.) :c func:`Py_Finalize` will destroy all sub-interpreters that875 when it returns.) :c:func:`Py_Finalize` will destroy all sub-interpreters that 163 876 haven't been explicitly destroyed at that point. 164 877 165 878 166 .. cfunction:: void Py_SetProgramName(char *name) 167 168 .. index:: 169 single: Py_Initialize() 170 single: main() 171 single: Py_GetPath() 172 173 This function should be called before :cfunc:`Py_Initialize` is called for 174 the first time, if it is called at all. It tells the interpreter the value 175 of the ``argv[0]`` argument to the :cfunc:`main` function of the program. 176 This is used by :cfunc:`Py_GetPath` and some other functions below to find 177 the Python run-time libraries relative to the interpreter executable. The 178 default value is ``'python'``. The argument should point to a 179 zero-terminated character string in static storage whose contents will not 180 change for the duration of the program's execution. No code in the Python 181 interpreter will change the contents of this storage. 182 183 184 .. cfunction:: char* Py_GetProgramName() 185 186 .. index:: single: Py_SetProgramName() 187 188 Return the program name set with :cfunc:`Py_SetProgramName`, or the default. 189 The returned string points into static storage; the caller should not modify its 190 value. 191 192 193 .. cfunction:: char* Py_GetPrefix() 194 195 Return the *prefix* for installed platform-independent files. This is derived 196 through a number of complicated rules from the program name set with 197 :cfunc:`Py_SetProgramName` and some environment variables; for example, if the 198 program name is ``'/usr/local/bin/python'``, the prefix is ``'/usr/local'``. The 199 returned string points into static storage; the caller should not modify its 200 value. This corresponds to the :makevar:`prefix` variable in the top-level 201 :file:`Makefile` and the :option:`--prefix` argument to the :program:`configure` 202 script at build time. The value is available to Python code as ``sys.prefix``. 203 It is only useful on Unix. See also the next function. 204 205 206 .. cfunction:: char* Py_GetExecPrefix() 207 208 Return the *exec-prefix* for installed platform-*dependent* files. This is 209 derived through a number of complicated rules from the program name set with 210 :cfunc:`Py_SetProgramName` and some environment variables; for example, if the 211 program name is ``'/usr/local/bin/python'``, the exec-prefix is 212 ``'/usr/local'``. The returned string points into static storage; the caller 213 should not modify its value. This corresponds to the :makevar:`exec_prefix` 214 variable in the top-level :file:`Makefile` and the :option:`--exec-prefix` 215 argument to the :program:`configure` script at build time. The value is 216 available to Python code as ``sys.exec_prefix``. It is only useful on Unix. 217 218 Background: The exec-prefix differs from the prefix when platform dependent 219 files (such as executables and shared libraries) are installed in a different 220 directory tree. In a typical installation, platform dependent files may be 221 installed in the :file:`/usr/local/plat` subtree while platform independent may 222 be installed in :file:`/usr/local`. 223 224 Generally speaking, a platform is a combination of hardware and software 225 families, e.g. Sparc machines running the Solaris 2.x operating system are 226 considered the same platform, but Intel machines running Solaris 2.x are another 227 platform, and Intel machines running Linux are yet another platform. Different 228 major revisions of the same operating system generally also form different 229 platforms. Non-Unix operating systems are a different story; the installation 230 strategies on those systems are so different that the prefix and exec-prefix are 231 meaningless, and set to the empty string. Note that compiled Python bytecode 232 files are platform independent (but not independent from the Python version by 233 which they were compiled!). 234 235 System administrators will know how to configure the :program:`mount` or 236 :program:`automount` programs to share :file:`/usr/local` between platforms 237 while having :file:`/usr/local/plat` be a different filesystem for each 238 platform. 239 240 241 .. cfunction:: char* Py_GetProgramFullPath() 242 243 .. index:: 244 single: Py_SetProgramName() 245 single: executable (in module sys) 246 247 Return the full program name of the Python executable; this is computed as a 248 side-effect of deriving the default module search path from the program name 249 (set by :cfunc:`Py_SetProgramName` above). The returned string points into 250 static storage; the caller should not modify its value. The value is available 251 to Python code as ``sys.executable``. 252 253 254 .. cfunction:: char* Py_GetPath() 255 256 .. index:: 257 triple: module; search; path 258 single: path (in module sys) 259 260 Return the default module search path; this is computed from the program name 261 (set by :cfunc:`Py_SetProgramName` above) and some environment variables. The 262 returned string consists of a series of directory names separated by a platform 263 dependent delimiter character. The delimiter character is ``':'`` on Unix and 264 Mac OS X, ``';'`` on Windows. The returned string points into static storage; 265 the caller should not modify its value. The value is available to Python code 266 as the list ``sys.path``, which may be modified to change the future search path 267 for loaded modules. 268 269 .. XXX should give the exact rules 270 271 272 .. cfunction:: const char* Py_GetVersion() 273 274 Return the version of this Python interpreter. This is a string that looks 275 something like :: 276 277 "1.5 (#67, Dec 31 1997, 22:34:28) [GCC 2.7.2.2]" 278 279 .. index:: single: version (in module sys) 280 281 The first word (up to the first space character) is the current Python version; 282 the first three characters are the major and minor version separated by a 283 period. The returned string points into static storage; the caller should not 284 modify its value. The value is available to Python code as ``sys.version``. 285 286 287 .. cfunction:: const char* Py_GetBuildNumber() 288 289 Return a string representing the Subversion revision that this Python executable 290 was built from. This number is a string because it may contain a trailing 'M' 291 if Python was built from a mixed revision source tree. 292 293 .. versionadded:: 2.5 294 295 296 .. cfunction:: const char* Py_GetPlatform() 297 298 .. index:: single: platform (in module sys) 299 300 Return the platform identifier for the current platform. On Unix, this is 301 formed from the "official" name of the operating system, converted to lower 302 case, followed by the major revision number; e.g., for Solaris 2.x, which is 303 also known as SunOS 5.x, the value is ``'sunos5'``. On Mac OS X, it is 304 ``'darwin'``. On Windows, it is ``'win'``. The returned string points into 305 static storage; the caller should not modify its value. The value is available 306 to Python code as ``sys.platform``. 307 308 309 .. cfunction:: const char* Py_GetCopyright() 310 311 Return the official copyright string for the current Python version, for example 312 313 ``'Copyright 1991-1995 Stichting Mathematisch Centrum, Amsterdam'`` 314 315 .. index:: single: copyright (in module sys) 316 317 The returned string points into static storage; the caller should not modify its 318 value. The value is available to Python code as ``sys.copyright``. 319 320 321 .. cfunction:: const char* Py_GetCompiler() 322 323 Return an indication of the compiler used to build the current Python version, 324 in square brackets, for example:: 325 326 "[GCC 2.7.2.2]" 327 328 .. index:: single: version (in module sys) 329 330 The returned string points into static storage; the caller should not modify its 331 value. The value is available to Python code as part of the variable 332 ``sys.version``. 333 334 335 .. cfunction:: const char* Py_GetBuildInfo() 336 337 Return information about the sequence number and build date and time of the 338 current Python interpreter instance, for example :: 339 340 "#67, Aug 1 1997, 22:34:28" 341 342 .. index:: single: version (in module sys) 343 344 The returned string points into static storage; the caller should not modify its 345 value. The value is available to Python code as part of the variable 346 ``sys.version``. 347 348 349 .. cfunction:: void PySys_SetArgv(int argc, char **argv) 350 351 .. index:: 352 single: main() 353 single: Py_FatalError() 354 single: argv (in module sys) 355 356 Set :data:`sys.argv` based on *argc* and *argv*. These parameters are 357 similar to those passed to the program's :cfunc:`main` function with the 358 difference that the first entry should refer to the script file to be 359 executed rather than the executable hosting the Python interpreter. If there 360 isn't a script that will be run, the first entry in *argv* can be an empty 361 string. If this function fails to initialize :data:`sys.argv`, a fatal 362 condition is signalled using :cfunc:`Py_FatalError`. 363 364 This function also prepends the executed script's path to :data:`sys.path`. 365 If no script is executed (in the case of calling ``python -c`` or just the 366 interactive interpreter), the empty string is used instead. 367 368 .. XXX impl. doesn't seem consistent in allowing 0/NULL for the params; 369 check w/ Guido. 370 371 372 .. cfunction:: void Py_SetPythonHome(char *home) 373 374 Set the default "home" directory, that is, the location of the standard 375 Python libraries. The libraries are searched in 376 :file:`{home}/lib/python{version}` and :file:`{home}/lib/python{version}`. 377 The argument should point to a zero-terminated character string in static 378 storage whose contents will not change for the duration of the program's 379 execution. No code in the Python interpreter will change the contents of 380 this storage. 381 382 383 .. cfunction:: char* Py_GetPythonHome() 384 385 Return the default "home", that is, the value set by a previous call to 386 :cfunc:`Py_SetPythonHome`, or the value of the :envvar:`PYTHONHOME` 387 environment variable if it is set. 388 389 390 .. _threads: 391 392 Thread State and the Global Interpreter Lock 393 ============================================ 394 395 .. index:: 396 single: global interpreter lock 397 single: interpreter lock 398 single: lock, interpreter 399 400 The Python interpreter is not fully thread safe. In order to support 401 multi-threaded Python programs, there's a global lock, called the :dfn:`global 402 interpreter lock` or :dfn:`GIL`, that must be held by the current thread before 403 it can safely access Python objects. Without the lock, even the simplest 404 operations could cause problems in a multi-threaded program: for example, when 405 two threads simultaneously increment the reference count of the same object, the 406 reference count could end up being incremented only once instead of twice. 407 408 .. index:: single: setcheckinterval() (in module sys) 409 410 Therefore, the rule exists that only the thread that has acquired the global 411 interpreter lock may operate on Python objects or call Python/C API functions. 412 In order to support multi-threaded Python programs, the interpreter regularly 413 releases and reacquires the lock --- by default, every 100 bytecode instructions 414 (this can be changed with :func:`sys.setcheckinterval`). The lock is also 415 released and reacquired around potentially blocking I/O operations like reading 416 or writing a file, so that other threads can run while the thread that requests 417 the I/O is waiting for the I/O operation to complete. 418 419 .. index:: 420 single: PyThreadState 421 single: PyThreadState 422 423 The Python interpreter needs to keep some bookkeeping information separate per 424 thread --- for this it uses a data structure called :ctype:`PyThreadState`. 425 There's one global variable, however: the pointer to the current 426 :ctype:`PyThreadState` structure. Before the addition of :dfn:`thread-local 427 storage` (:dfn:`TLS`) the current thread state had to be manipulated 428 explicitly. 429 430 This is easy enough in most cases. Most code manipulating the global 431 interpreter lock has the following simple structure:: 432 433 Save the thread state in a local variable. 434 Release the global interpreter lock. 435 ...Do some blocking I/O operation... 436 Reacquire the global interpreter lock. 437 Restore the thread state from the local variable. 438 439 This is so common that a pair of macros exists to simplify it:: 440 441 Py_BEGIN_ALLOW_THREADS 442 ...Do some blocking I/O operation... 443 Py_END_ALLOW_THREADS 444 445 .. index:: 446 single: Py_BEGIN_ALLOW_THREADS 447 single: Py_END_ALLOW_THREADS 448 449 The :cmacro:`Py_BEGIN_ALLOW_THREADS` macro opens a new block and declares a 450 hidden local variable; the :cmacro:`Py_END_ALLOW_THREADS` macro closes the 451 block. Another advantage of using these two macros is that when Python is 452 compiled without thread support, they are defined empty, thus saving the thread 453 state and GIL manipulations. 454 455 When thread support is enabled, the block above expands to the following code:: 456 457 PyThreadState *_save; 458 459 _save = PyEval_SaveThread(); 460 ...Do some blocking I/O operation... 461 PyEval_RestoreThread(_save); 462 463 Using even lower level primitives, we can get roughly the same effect as 464 follows:: 465 466 PyThreadState *_save; 467 468 _save = PyThreadState_Swap(NULL); 469 PyEval_ReleaseLock(); 470 ...Do some blocking I/O operation... 471 PyEval_AcquireLock(); 472 PyThreadState_Swap(_save); 473 474 .. index:: 475 single: PyEval_RestoreThread() 476 single: errno 477 single: PyEval_SaveThread() 478 single: PyEval_ReleaseLock() 479 single: PyEval_AcquireLock() 480 481 There are some subtle differences; in particular, :cfunc:`PyEval_RestoreThread` 482 saves and restores the value of the global variable :cdata:`errno`, since the 483 lock manipulation does not guarantee that :cdata:`errno` is left alone. Also, 484 when thread support is disabled, :cfunc:`PyEval_SaveThread` and 485 :cfunc:`PyEval_RestoreThread` don't manipulate the GIL; in this case, 486 :cfunc:`PyEval_ReleaseLock` and :cfunc:`PyEval_AcquireLock` are not available. 487 This is done so that dynamically loaded extensions compiled with thread support 488 enabled can be loaded by an interpreter that was compiled with disabled thread 489 support. 490 491 The global interpreter lock is used to protect the pointer to the current thread 492 state. When releasing the lock and saving the thread state, the current thread 493 state pointer must be retrieved before the lock is released (since another 494 thread could immediately acquire the lock and store its own thread state in the 495 global variable). Conversely, when acquiring the lock and restoring the thread 496 state, the lock must be acquired before storing the thread state pointer. 497 498 It is important to note that when threads are created from C, they don't have 499 the global interpreter lock, nor is there a thread state data structure for 500 them. Such threads must bootstrap themselves into existence, by first 501 creating a thread state data structure, then acquiring the lock, and finally 502 storing their thread state pointer, before they can start using the Python/C 503 API. When they are done, they should reset the thread state pointer, release 504 the lock, and finally free their thread state data structure. 505 506 Beginning with version 2.3, threads can now take advantage of the 507 :cfunc:`PyGILState_\*` functions to do all of the above automatically. The 508 typical idiom for calling into Python from a C thread is now:: 509 510 PyGILState_STATE gstate; 511 gstate = PyGILState_Ensure(); 512 513 /* Perform Python actions here. */ 514 result = CallSomeFunction(); 515 /* evaluate result */ 516 517 /* Release the thread. No Python API allowed beyond this point. */ 518 PyGILState_Release(gstate); 519 520 Note that the :cfunc:`PyGILState_\*` functions assume there is only one global 521 interpreter (created automatically by :cfunc:`Py_Initialize`). Python still 522 supports the creation of additional interpreters (using 523 :cfunc:`Py_NewInterpreter`), but mixing multiple interpreters and the 524 :cfunc:`PyGILState_\*` API is unsupported. 525 526 Another important thing to note about threads is their behaviour in the face 527 of the C :cfunc:`fork` call. On most systems with :cfunc:`fork`, after a 528 process forks only the thread that issued the fork will exist. That also 529 means any locks held by other threads will never be released. Python solves 530 this for :func:`os.fork` by acquiring the locks it uses internally before 531 the fork, and releasing them afterwards. In addition, it resets any 532 :ref:`lock-objects` in the child. When extending or embedding Python, there 533 is no way to inform Python of additional (non-Python) locks that need to be 534 acquired before or reset after a fork. OS facilities such as 535 :cfunc:`posix_atfork` would need to be used to accomplish the same thing. 536 Additionally, when extending or embedding Python, calling :cfunc:`fork` 537 directly rather than through :func:`os.fork` (and returning to or calling 538 into Python) may result in a deadlock by one of Python's internal locks 539 being held by a thread that is defunct after the fork. 540 :cfunc:`PyOS_AfterFork` tries to reset the necessary locks, but is not 541 always able to. 542 543 .. ctype:: PyInterpreterState 544 545 This data structure represents the state shared by a number of cooperating 546 threads. Threads belonging to the same interpreter share their module 547 administration and a few other internal items. There are no public members in 548 this structure. 549 550 Threads belonging to different interpreters initially share nothing, except 551 process state like available memory, open file descriptors and such. The global 552 interpreter lock is also shared by all threads, regardless of to which 553 interpreter they belong. 554 555 556 .. ctype:: PyThreadState 557 558 This data structure represents the state of a single thread. The only public 559 data member is :ctype:`PyInterpreterState \*`:attr:`interp`, which points to 560 this thread's interpreter state. 561 562 563 .. cfunction:: void PyEval_InitThreads() 564 565 .. index:: 566 single: PyEval_ReleaseLock() 567 single: PyEval_ReleaseThread() 568 single: PyEval_SaveThread() 569 single: PyEval_RestoreThread() 570 571 Initialize and acquire the global interpreter lock. It should be called in the 572 main thread before creating a second thread or engaging in any other thread 573 operations such as :cfunc:`PyEval_ReleaseLock` or 574 ``PyEval_ReleaseThread(tstate)``. It is not needed before calling 575 :cfunc:`PyEval_SaveThread` or :cfunc:`PyEval_RestoreThread`. 576 577 .. index:: single: Py_Initialize() 578 579 This is a no-op when called for a second time. It is safe to call this function 580 before calling :cfunc:`Py_Initialize`. 581 582 .. index:: module: thread 583 584 When only the main thread exists, no GIL operations are needed. This is a 585 common situation (most Python programs do not use threads), and the lock 586 operations slow the interpreter down a bit. Therefore, the lock is not 587 created initially. This situation is equivalent to having acquired the lock: 588 when there is only a single thread, all object accesses are safe. Therefore, 589 when this function initializes the global interpreter lock, it also acquires 590 it. Before the Python :mod:`thread` module creates a new thread, knowing 591 that either it has the lock or the lock hasn't been created yet, it calls 592 :cfunc:`PyEval_InitThreads`. When this call returns, it is guaranteed that 593 the lock has been created and that the calling thread has acquired it. 594 595 It is **not** safe to call this function when it is unknown which thread (if 596 any) currently has the global interpreter lock. 597 598 This function is not available when thread support is disabled at compile time. 599 600 601 .. cfunction:: int PyEval_ThreadsInitialized() 602 603 Returns a non-zero value if :cfunc:`PyEval_InitThreads` has been called. This 604 function can be called without holding the GIL, and therefore can be used to 605 avoid calls to the locking API when running single-threaded. This function is 606 not available when thread support is disabled at compile time. 607 608 .. versionadded:: 2.4 609 610 611 .. cfunction:: void PyEval_AcquireLock() 612 613 Acquire the global interpreter lock. The lock must have been created earlier. 614 If this thread already has the lock, a deadlock ensues. This function is not 615 available when thread support is disabled at compile time. 616 617 618 .. cfunction:: void PyEval_ReleaseLock() 619 620 Release the global interpreter lock. The lock must have been created earlier. 621 This function is not available when thread support is disabled at compile time. 622 623 624 .. cfunction:: void PyEval_AcquireThread(PyThreadState *tstate) 625 626 Acquire the global interpreter lock and set the current thread state to 627 *tstate*, which should not be *NULL*. The lock must have been created earlier. 628 If this thread already has the lock, deadlock ensues. This function is not 629 available when thread support is disabled at compile time. 630 631 632 .. cfunction:: void PyEval_ReleaseThread(PyThreadState *tstate) 633 634 Reset the current thread state to *NULL* and release the global interpreter 635 lock. The lock must have been created earlier and must be held by the current 636 thread. The *tstate* argument, which must not be *NULL*, is only used to check 637 that it represents the current thread state --- if it isn't, a fatal error is 638 reported. This function is not available when thread support is disabled at 639 compile time. 640 641 642 .. cfunction:: PyThreadState* PyEval_SaveThread() 643 644 Release the global interpreter lock (if it has been created and thread 645 support is enabled) and reset the thread state to *NULL*, returning the 646 previous thread state (which is not *NULL*). If the lock has been created, 647 the current thread must have acquired it. (This function is available even 648 when thread support is disabled at compile time.) 649 650 651 .. cfunction:: void PyEval_RestoreThread(PyThreadState *tstate) 652 653 Acquire the global interpreter lock (if it has been created and thread 654 support is enabled) and set the thread state to *tstate*, which must not be 655 *NULL*. If the lock has been created, the current thread must not have 656 acquired it, otherwise deadlock ensues. (This function is available even 657 when thread support is disabled at compile time.) 658 659 660 .. cfunction:: void PyEval_ReInitThreads() 661 662 This function is called from :cfunc:`PyOS_AfterFork` to ensure that newly 663 created child processes don't hold locks referring to threads which 664 are not running in the child process. 665 666 667 The following macros are normally used without a trailing semicolon; look for 668 example usage in the Python source distribution. 669 670 671 .. cmacro:: Py_BEGIN_ALLOW_THREADS 672 673 This macro expands to ``{ PyThreadState *_save; _save = PyEval_SaveThread();``. 674 Note that it contains an opening brace; it must be matched with a following 675 :cmacro:`Py_END_ALLOW_THREADS` macro. See above for further discussion of this 676 macro. It is a no-op when thread support is disabled at compile time. 677 678 679 .. cmacro:: Py_END_ALLOW_THREADS 680 681 This macro expands to ``PyEval_RestoreThread(_save); }``. Note that it contains 682 a closing brace; it must be matched with an earlier 683 :cmacro:`Py_BEGIN_ALLOW_THREADS` macro. See above for further discussion of 684 this macro. It is a no-op when thread support is disabled at compile time. 685 686 687 .. cmacro:: Py_BLOCK_THREADS 688 689 This macro expands to ``PyEval_RestoreThread(_save);``: it is equivalent to 690 :cmacro:`Py_END_ALLOW_THREADS` without the closing brace. It is a no-op when 691 thread support is disabled at compile time. 692 693 694 .. cmacro:: Py_UNBLOCK_THREADS 695 696 This macro expands to ``_save = PyEval_SaveThread();``: it is equivalent to 697 :cmacro:`Py_BEGIN_ALLOW_THREADS` without the opening brace and variable 698 declaration. It is a no-op when thread support is disabled at compile time. 699 700 All of the following functions are only available when thread support is enabled 701 at compile time, and must be called only when the global interpreter lock has 702 been created. 703 704 705 .. cfunction:: PyInterpreterState* PyInterpreterState_New() 706 707 Create a new interpreter state object. The global interpreter lock need not 708 be held, but may be held if it is necessary to serialize calls to this 709 function. 710 711 712 .. cfunction:: void PyInterpreterState_Clear(PyInterpreterState *interp) 713 714 Reset all information in an interpreter state object. The global interpreter 715 lock must be held. 716 717 718 .. cfunction:: void PyInterpreterState_Delete(PyInterpreterState *interp) 719 720 Destroy an interpreter state object. The global interpreter lock need not be 721 held. The interpreter state must have been reset with a previous call to 722 :cfunc:`PyInterpreterState_Clear`. 723 724 725 .. cfunction:: PyThreadState* PyThreadState_New(PyInterpreterState *interp) 726 727 Create a new thread state object belonging to the given interpreter object. 728 The global interpreter lock need not be held, but may be held if it is 729 necessary to serialize calls to this function. 730 731 732 .. cfunction:: void PyThreadState_Clear(PyThreadState *tstate) 733 734 Reset all information in a thread state object. The global interpreter lock 735 must be held. 736 737 738 .. cfunction:: void PyThreadState_Delete(PyThreadState *tstate) 739 740 Destroy a thread state object. The global interpreter lock need not be held. 741 The thread state must have been reset with a previous call to 742 :cfunc:`PyThreadState_Clear`. 743 744 745 .. cfunction:: PyThreadState* PyThreadState_Get() 746 747 Return the current thread state. The global interpreter lock must be held. 748 When the current thread state is *NULL*, this issues a fatal error (so that 749 the caller needn't check for *NULL*). 750 751 752 .. cfunction:: PyThreadState* PyThreadState_Swap(PyThreadState *tstate) 753 754 Swap the current thread state with the thread state given by the argument 755 *tstate*, which may be *NULL*. The global interpreter lock must be held. 756 757 758 .. cfunction:: PyObject* PyThreadState_GetDict() 759 760 Return a dictionary in which extensions can store thread-specific state 761 information. Each extension should use a unique key to use to store state in 762 the dictionary. It is okay to call this function when no current thread state 763 is available. If this function returns *NULL*, no exception has been raised and 764 the caller should assume no current thread state is available. 765 766 .. versionchanged:: 2.3 767 Previously this could only be called when a current thread is active, and *NULL* 768 meant that an exception was raised. 769 770 771 .. cfunction:: int PyThreadState_SetAsyncExc(long id, PyObject *exc) 772 773 Asynchronously raise an exception in a thread. The *id* argument is the thread 774 id of the target thread; *exc* is the exception object to be raised. This 775 function does not steal any references to *exc*. To prevent naive misuse, you 776 must write your own C extension to call this. Must be called with the GIL held. 777 Returns the number of thread states modified; this is normally one, but will be 778 zero if the thread id isn't found. If *exc* is :const:`NULL`, the pending 779 exception (if any) for the thread is cleared. This raises no exceptions. 780 781 .. versionadded:: 2.3 782 783 784 .. cfunction:: PyGILState_STATE PyGILState_Ensure() 785 786 Ensure that the current thread is ready to call the Python C API regardless 787 of the current state of Python, or of the global interpreter lock. This may 788 be called as many times as desired by a thread as long as each call is 789 matched with a call to :cfunc:`PyGILState_Release`. In general, other 790 thread-related APIs may be used between :cfunc:`PyGILState_Ensure` and 791 :cfunc:`PyGILState_Release` calls as long as the thread state is restored to 792 its previous state before the Release(). For example, normal usage of the 793 :cmacro:`Py_BEGIN_ALLOW_THREADS` and :cmacro:`Py_END_ALLOW_THREADS` macros is 794 acceptable. 795 796 The return value is an opaque "handle" to the thread state when 797 :cfunc:`PyGILState_Ensure` was called, and must be passed to 798 :cfunc:`PyGILState_Release` to ensure Python is left in the same state. Even 799 though recursive calls are allowed, these handles *cannot* be shared - each 800 unique call to :cfunc:`PyGILState_Ensure` must save the handle for its call 801 to :cfunc:`PyGILState_Release`. 802 803 When the function returns, the current thread will hold the GIL. Failure is a 804 fatal error. 805 806 .. versionadded:: 2.3 807 808 809 .. cfunction:: void PyGILState_Release(PyGILState_STATE) 810 811 Release any resources previously acquired. After this call, Python's state will 812 be the same as it was prior to the corresponding :cfunc:`PyGILState_Ensure` call 813 (but generally this state will be unknown to the caller, hence the use of the 814 GILState API.) 815 816 Every call to :cfunc:`PyGILState_Ensure` must be matched by a call to 817 :cfunc:`PyGILState_Release` on the same thread. 818 819 .. versionadded:: 2.3 879 Bugs and caveats 880 ---------------- 881 882 Because sub-interpreters (and the main interpreter) are part of the same 883 process, the insulation between them isn't perfect --- for example, using 884 low-level file operations like :func:`os.close` they can 885 (accidentally or maliciously) affect each other's open files. Because of the 886 way extensions are shared between (sub-)interpreters, some extensions may not 887 work properly; this is especially likely when the extension makes use of 888 (static) global variables, or when the extension manipulates its module's 889 dictionary after its initialization. It is possible to insert objects created 890 in one sub-interpreter into a namespace of another sub-interpreter; this should 891 be done with great care to avoid sharing user-defined functions, methods, 892 instances or classes between sub-interpreters, since import operations executed 893 by such objects may affect the wrong (sub-)interpreter's dictionary of loaded 894 modules. 895 896 Also note that combining this functionality with :c:func:`PyGILState_\*` APIs 897 is delicate, because these APIs assume a bijection between Python thread states 898 and OS-level threads, an assumption broken by the presence of sub-interpreters. 899 It is highly recommended that you don't switch sub-interpreters between a pair 900 of matching :c:func:`PyGILState_Ensure` and :c:func:`PyGILState_Release` calls. 901 Furthermore, extensions (such as :mod:`ctypes`) using these APIs to allow calling 902 of Python code from non-Python created threads will probably be broken when using 903 sub-interpreters. 904 905 906 Asynchronous Notifications 907 ========================== 908 909 A mechanism is provided to make asynchronous notifications to the main 910 interpreter thread. These notifications take the form of a function 911 pointer and a void pointer argument. 912 913 914 .. c:function:: int Py_AddPendingCall(int (*func)(void *), void *arg) 915 916 .. index:: single: Py_AddPendingCall() 917 918 Schedule a function to be called from the main interpreter thread. On 919 success, 0 is returned and *func* is queued for being called in the 920 main thread. On failure, -1 is returned without setting any exception. 921 922 When successfully queued, *func* will be *eventually* called from the 923 main interpreter thread with the argument *arg*. It will be called 924 asynchronously with respect to normally running Python code, but with 925 both these conditions met: 926 927 * on a :term:`bytecode` boundary; 928 * with the main thread holding the :term:`global interpreter lock` 929 (*func* can therefore use the full C API). 930 931 *func* must return 0 on success, or -1 on failure with an exception 932 set. *func* won't be interrupted to perform another asynchronous 933 notification recursively, but it can still be interrupted to switch 934 threads if the global interpreter lock is released. 935 936 This function doesn't need a current thread state to run, and it doesn't 937 need the global interpreter lock. 938 939 .. warning:: 940 This is a low-level function, only useful for very special cases. 941 There is no guarantee that *func* will be called as quick as 942 possible. If the main thread is busy executing a system call, 943 *func* won't be called before the system call returns. This 944 function is generally **not** suitable for calling Python code from 945 arbitrary C threads. Instead, use the :ref:`PyGILState API<gilstate>`. 946 947 .. versionadded:: 2.7 820 948 821 949 … … 842 970 843 971 844 .. c type:: int (*Py_tracefunc)(PyObject *obj, PyFrameObject *frame, int what, PyObject *arg)845 846 The type of the trace function registered using :c func:`PyEval_SetProfile` and847 :c func:`PyEval_SetTrace`. The first parameter is the object passed to the972 .. c:type:: int (*Py_tracefunc)(PyObject *obj, PyFrameObject *frame, int what, PyObject *arg) 973 974 The type of the trace function registered using :c:func:`PyEval_SetProfile` and 975 :c:func:`PyEval_SetTrace`. The first parameter is the object passed to the 848 976 registration function as *obj*, *frame* is the frame object to which the event 849 977 pertains, *what* is one of the constants :const:`PyTrace_CALL`, … … 862 990 | :const:`PyTrace_LINE` | Always *NULL*. | 863 991 +------------------------------+--------------------------------------+ 864 | :const:`PyTrace_RETURN` | Value being returned to the caller. | 992 | :const:`PyTrace_RETURN` | Value being returned to the caller, | 993 | | or *NULL* if caused by an exception. | 865 994 +------------------------------+--------------------------------------+ 866 | :const:`PyTrace_C_CALL` | Name of function being called.|995 | :const:`PyTrace_C_CALL` | Function object being called. | 867 996 +------------------------------+--------------------------------------+ 868 | :const:`PyTrace_C_EXCEPTION` | Always *NULL*.|997 | :const:`PyTrace_C_EXCEPTION` | Function object being called. | 869 998 +------------------------------+--------------------------------------+ 870 | :const:`PyTrace_C_RETURN` | Always *NULL*.|999 | :const:`PyTrace_C_RETURN` | Function object being called. | 871 1000 +------------------------------+--------------------------------------+ 872 1001 873 1002 874 .. c var:: int PyTrace_CALL875 876 The value of the *what* parameter to a :c type:`Py_tracefunc` function when a new1003 .. c:var:: int PyTrace_CALL 1004 1005 The value of the *what* parameter to a :c:type:`Py_tracefunc` function when a new 877 1006 call to a function or method is being reported, or a new entry into a generator. 878 1007 Note that the creation of the iterator for a generator function is not reported … … 881 1010 882 1011 883 .. c var:: int PyTrace_EXCEPTION884 885 The value of the *what* parameter to a :c type:`Py_tracefunc` function when an1012 .. c:var:: int PyTrace_EXCEPTION 1013 1014 The value of the *what* parameter to a :c:type:`Py_tracefunc` function when an 886 1015 exception has been raised. The callback function is called with this value for 887 1016 *what* when after any bytecode is processed after which the exception becomes … … 892 1021 893 1022 894 .. c var:: int PyTrace_LINE1023 .. c:var:: int PyTrace_LINE 895 1024 896 1025 The value passed as the *what* parameter to a trace function (but not a … … 898 1027 899 1028 900 .. c var:: int PyTrace_RETURN901 902 The value for the *what* parameter to :c type:`Py_tracefunc` functions when a1029 .. c:var:: int PyTrace_RETURN 1030 1031 The value for the *what* parameter to :c:type:`Py_tracefunc` functions when a 903 1032 call is returning without propagating an exception. 904 1033 905 1034 906 .. c var:: int PyTrace_C_CALL907 908 The value for the *what* parameter to :c type:`Py_tracefunc` functions when a C1035 .. c:var:: int PyTrace_C_CALL 1036 1037 The value for the *what* parameter to :c:type:`Py_tracefunc` functions when a C 909 1038 function is about to be called. 910 1039 911 1040 912 .. c var:: int PyTrace_C_EXCEPTION913 914 The value for the *what* parameter to :c type:`Py_tracefunc` functions when a C915 function has thrownan exception.916 917 918 .. c var:: int PyTrace_C_RETURN919 920 The value for the *what* parameter to :c type:`Py_tracefunc` functions when a C1041 .. c:var:: int PyTrace_C_EXCEPTION 1042 1043 The value for the *what* parameter to :c:type:`Py_tracefunc` functions when a C 1044 function has raised an exception. 1045 1046 1047 .. c:var:: int PyTrace_C_RETURN 1048 1049 The value for the *what* parameter to :c:type:`Py_tracefunc` functions when a C 921 1050 function has returned. 922 1051 923 1052 924 .. c function:: void PyEval_SetProfile(Py_tracefunc func, PyObject *obj)1053 .. c:function:: void PyEval_SetProfile(Py_tracefunc func, PyObject *obj) 925 1054 926 1055 Set the profiler function to *func*. The *obj* parameter is passed to the … … 932 1061 933 1062 934 .. c function:: void PyEval_SetTrace(Py_tracefunc func, PyObject *obj)1063 .. c:function:: void PyEval_SetTrace(Py_tracefunc func, PyObject *obj) 935 1064 936 1065 Set the tracing function to *func*. This is similar to 937 :c func:`PyEval_SetProfile`, except the tracing function does receive line-number1066 :c:func:`PyEval_SetProfile`, except the tracing function does receive line-number 938 1067 events. 939 1068 940 .. c function:: PyObject* PyEval_GetCallStats(PyObject *self)1069 .. c:function:: PyObject* PyEval_GetCallStats(PyObject *self) 941 1070 942 1071 Return a tuple of function call counts. There are constants defined for the … … 990 1119 991 1120 992 .. c function:: PyInterpreterState* PyInterpreterState_Head()1121 .. c:function:: PyInterpreterState* PyInterpreterState_Head() 993 1122 994 1123 Return the interpreter state object at the head of the list of all such objects. … … 997 1126 998 1127 999 .. c function:: PyInterpreterState* PyInterpreterState_Next(PyInterpreterState *interp)1128 .. c:function:: PyInterpreterState* PyInterpreterState_Next(PyInterpreterState *interp) 1000 1129 1001 1130 Return the next interpreter state object after *interp* from the list of all … … 1005 1134 1006 1135 1007 .. c function:: PyThreadState * PyInterpreterState_ThreadHead(PyInterpreterState *interp)1008 1009 Return the a pointer to the first :c type:`PyThreadState` object in the list of1136 .. c:function:: PyThreadState * PyInterpreterState_ThreadHead(PyInterpreterState *interp) 1137 1138 Return the a pointer to the first :c:type:`PyThreadState` object in the list of 1010 1139 threads associated with the interpreter *interp*. 1011 1140 … … 1013 1142 1014 1143 1015 .. c function:: PyThreadState* PyThreadState_Next(PyThreadState *tstate)1144 .. c:function:: PyThreadState* PyThreadState_Next(PyThreadState *tstate) 1016 1145 1017 1146 Return the next thread state object after *tstate* from the list of all such 1018 objects belonging to the same :c type:`PyInterpreterState` object.1147 objects belonging to the same :c:type:`PyInterpreterState` object. 1019 1148 1020 1149 .. versionadded:: 2.2
Note:
See TracChangeset
for help on using the changeset viewer.