Staging
v0.5.1
v0.5.1
https://github.com/python/cpython
Revision 7bbd101bb18d7afb744f1cfa494187538d7c97c3 authored by Zachary Ware on 26 February 2014, 16:40:38 UTC, committed by Zachary Ware on 26 February 2014, 16:40:38 UTC
The signature and description of PyException_SetCause now use "cause" rather than "ctx" to match the code.
1 parent 5ea5d2c
Tip revision: 7bbd101bb18d7afb744f1cfa494187538d7c97c3 authored by Zachary Ware on 26 February 2014, 16:40:38 UTC
Fix several C-API doc typos caught by tomo cocoa on docs@.
Fix several C-API doc typos caught by tomo cocoa on docs@.
Tip revision: 7bbd101
_testembed.c
#include <Python.h>
#include <stdio.h>
void print_subinterp(void)
{
/* Just output some debug stuff */
PyThreadState *ts = PyThreadState_Get();
printf("interp %p, thread state %p: ", ts->interp, ts);
fflush(stdout);
PyRun_SimpleString(
"import sys;"
"print('id(modules) =', id(sys.modules));"
"sys.stdout.flush()"
);
}
int main(int argc, char *argv[])
{
PyThreadState *mainstate, *substate;
#ifdef WITH_THREAD
PyGILState_STATE gilstate;
#endif
int i, j;
for (i=0; i<3; i++) {
printf("--- Pass %d ---\n", i);
/* HACK: the "./" at front avoids a search along the PATH in
Modules/getpath.c */
Py_SetProgramName(L"./_testembed");
Py_Initialize();
mainstate = PyThreadState_Get();
#ifdef WITH_THREAD
PyEval_InitThreads();
PyEval_ReleaseThread(mainstate);
gilstate = PyGILState_Ensure();
#endif
print_subinterp();
PyThreadState_Swap(NULL);
for (j=0; j<3; j++) {
substate = Py_NewInterpreter();
print_subinterp();
Py_EndInterpreter(substate);
}
PyThreadState_Swap(mainstate);
print_subinterp();
#ifdef WITH_THREAD
PyGILState_Release(gilstate);
#endif
PyEval_RestoreThread(mainstate);
Py_Finalize();
}
return 0;
}
Computing file changes ...