Cython如何cimport libc的raise函数?解决与Python raise关键字冲突
解决方法
你看到的raise_"raise"是Cython针对关键字冲突做的特殊绑定规则:Cython层面对外暴露的函数名是raise_,底层实际绑定的还是C标准库的raise函数,专门用来避开和Python的raise关键字重名的问题。
具体使用步骤如下:
- 首先在你的
.pyx或.pxd文件头部导入libc的signal模块:
from libc cimport signal
- 直接通过
signal.raise_调用即可,参数传入需要发送的信号编号就行。
调用示例
以下代码演示给当前进程发送SIGTERM信号:
from libc cimport signal # 也可以直接导入需要用到的信号常量 from libc.signal cimport SIGTERM cdef void demo_call_raise(): # 此处调用的就是C标准库的raise函数 signal.raise_(SIGTERM)
不需要自己额外做重命名处理,直接使用官方预定义的raise_别名即可完全避开关键字冲突。
内容的提问来源于stack exchange,提问作者Brent Baccala
相关产品推荐
相关产品推荐

