编程语言
首页 > 编程语言> > python – f2py函数发布GIL

python – f2py函数发布GIL

作者:互联网

当我调用f2py包装函数时,Global Interpretter Lock(GIL)是否会被释放?

(我很高兴尝试自己发现,但我对numpy来源不太熟悉,知道从哪里开始寻找)……

为了澄清,这个问题的一个好答案是帮助我知道在numpy源中寻找Py_BEGIN_ALLOW_THREADS的位置,或者它只是让我知道GIL是否被释放(最好有一些证据).

解决方法:

不,f2py默认将GIL留在原地.但是,您可以通过添加threadsafe指令来释放GIL.

例:

subroutine foo(a)
!f2py threadsafe
!f2py intent(out) :: a
integer a
a = 5
end subroutine foo

现在编译它:

f2py -c -m foo --build-dir test_build foo.f90

我们可以查看源代码:

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

但是,如果我们重复删除!f2py线程安全行的过程,则不包括释放GIL的宏.

标签:python,fortran,numpy,gil,f2py
来源: https://codeday.me/bug/20190620/1244517.html