繁体   English   中英

f2py功能发布GIL

[英]f2py function release GIL

当我调用f2py包装函数时,全局解释器锁(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 threadsafe行的过程,则不包含用于释放GIL的宏。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM