Call PyEval_InitThreads() in module initializer to ensure it's safe

to spawn rust threads in the extension module and acquire the GIL from
those threads.
This commit is contained in:
Daniel Grunwald 2015-06-27 19:26:36 +02:00
parent 280cdab7a2
commit 1423162ad4
1 changed files with 2 additions and 0 deletions

View File

@ -210,6 +210,7 @@ pub unsafe fn py_module_initializer_impl(
) {
abort_on_panic!({
let py = Python::assume_gil_acquired();
ffi::PyEval_InitThreads();
let module = ffi::Py_InitModule(name, ptr::null_mut());
if module.is_null() { return; }
@ -266,6 +267,7 @@ pub unsafe fn py_module_initializer_impl(
) -> *mut ffi::PyObject {
abort_on_panic!({
let py = Python::assume_gil_acquired();
ffi::PyEval_InitThreads();
let module = ffi::PyModule_Create(def);
if module.is_null() { return module; }