不,f2py默认将GIL留在原地.但是,您可以通过添加threadsafe指令来释放GIL .
例:
subroutine foo(a)
!f2py threadsafe
!f2py intent(out) :: a
integer a
a = 5
end subroutine foo
Run Code Online (Sandbox Code Playgroud)
现在编译它:
f2py -c -m foo --build-dir test_build foo.f90
Run Code Online (Sandbox Code Playgroud)
我们可以查看源代码:
grep THREAD test_build/src.*/*.c
build/src.linux-x86_64-2.7/testmodule.c: Py_BEGIN_ALLOW_THREADS
build/src.linux-x86_64-2.7/testmodule.c: Py_END_ALLOW_THREADS
Run Code Online (Sandbox Code Playgroud)
但是,如果我们重复删除!f2py threadsafe行的过程,则不包括释放GIL的宏.