如何在cython中编译时删除python断言?

use*_*353 6 python assert cython

所以,这是我的问题:我在python中编码,但我需要提高代码中某些部分的性能太慢.一个好的(简单的)解决方案似乎是使用cython; 我试了一下,结果很好.问题是我在我的python代码中使用assert语句.在使用cython之前,我可以使用-OO选项编译我的python代码,这样我就可以提供一个不执行任何断言测试的版本,并且仍然有调试的断言.但是在cython中编译的文件似乎总是执行断言.是否有一些选项可以传递给cython编译以删除(或不删除)断言?

Sve*_*ach 10

如果您定义C预处理器宏,Cython会跳过断言PYREX_WITHOUT_ASSERTIONS.因此-DPYREX_WITHOUT_ASSERTIONS在编译生成的C文件时传递给C编译器.如何做到这取决于您的构建过程.

  • 虽然我们支持PYREX_WITHOUT_ASSERTIONS以实现向后兼容性,但CYTHON_WITHOUT_ASSERTIONS的工作原理也同样适用. (4认同)