如何逐行分析cython功能
我经常很难在cython
代码中找到瓶颈。如何cython
逐行分析功能?
-
罗伯特·布拉德肖(Robert Bradshaw)帮助我获得了罗伯特·克恩(Robert
Kern)的line_profiler
工具用于cdef
函数的工作,我认为我会在上分享结果stackoverflow
。简而言之,请设置常规
.pyx
文件并生成脚本,并在调用之前添加以下内容cythonize
。# Thanks to @tryptofame for proposing an updated snippet from Cython.Compiler.Options import get_directive_defaults directive_defaults = get_directive_defaults() directive_defaults['linetrace'] = True directive_defaults['binding'] = True
此外,您需要
CYTHON_TRACE=1
通过修改extensions
设置来定义C宏,以便extensions = [ Extension("test", ["test.pyx"], define_macros=[('CYTHON_TRACE', '1')]) ]
%%cython
在iPython
笔记本中使用魔术的一个有效示例在此处:http
:
//nbviewer.ipython.org/gist/tillahoffmann/296501acea231cbdf5e7