February 2006
Intermediate to advanced
648 pages
14h 53m
English
A global interpreter lock is used to prevent more than one thread from executing in the interpreter at once. If a function written in an extension module executes for a long time, it will block the execution of other threads until it completes. This is because the lock is held whenever an extension function is invoked. If the extension module is thread-safe, the following macros can be used to release and reacquire the global interpreter lock:
Py_BEGIN_ALLOW_THREADSReleases the global interpreter lock and allows other threads to run in the interpreter. The C extension must not invoke any functions in the Python C API while the lock is released.
Py_END_ALLOW_THREADSReacquires the global interpreter lock. The extension will block until ...