Mercurial > cpython-lru_cache-weakref
diff Doc/api/init.tex @ 28133:9ca4a67b9973 legacy-trunk
Commit MvL's doc patch for SF bug #221327. This adds an example of
calling into Python from a C thread.
| author | Guido van Rossum <guido@python.org> |
|---|---|
| date | Sun, 02 Mar 2003 13:17:20 +0000 |
| parents | e62099c65a3c |
| children | 4f0b7acffc7d |
line wrap: on
line diff
--- a/Doc/api/init.tex Sun Mar 02 04:54:24 2003 +0000 +++ b/Doc/api/init.tex Sun Mar 02 13:17:20 2003 +0000 @@ -466,6 +466,28 @@ this must be done by a thread that is created by Python or by the main thread after Python is initialized). +Assuming you have access to an interpreter object, the typical idiom +for calling into Python from a C thread is + +\begin{verbatim} + PyThreadState *tstate; + PyObject *result; + + /* interp is your reference to an interpreter object. */ + tstate = PyThreadState_New(interp); + PyEval_AcquireThread(tstate); + + /* Perform Python actions here. */ + result = CallSomeFunction(); + /* evaluate result */ + + /* Release the thread. No Python API allowed beyond this point. */ + PyEval_ReleaseThread(tstate); + + /* You can either delete the thread state, or save it + until you need it the next time. */ + PyThreadState_Delete(tstate); +\end{verbatim} \begin{ctypedesc}{PyInterpreterState} This data structure represents the state shared by a number of
