我阅读了这个问题的答案How to profile cython functions line-by-line,但我似乎无法让它与我的设置一起使用。
我有一个cumsum.pyx
文件:
# cython: profile=True
# cython: linetrace=True
# cython: binding=True
DEF CYTHON_TRACE = 1
def cumulative_sum(int n):
cdef int s=0, i
for i in range(n):
s += i
return s
我编译它:
cython cumsum.pyx
gcc cumsum.c $(pkg-config --cflags --libs python3) -o cumsum.so -shared -fPIC
然后我尝试将其描述为ipython
:
%load_ext line_profiler
from cumsum import cumulative_sum
%lprun -f cumulative_sum cumulative_sum(100)
我没有收到错误消息,只有一个空的个人资料:
Timer unit: 1e-06 s
Total time: 0 s
File: cumsum.pyx
Function: cumulative_sum at line 6
Line # Hits Time Per Hit % Time Line Contents
==============================================================
6 def cumulative_sum(int n):
7 cdef int s=0, i
8 for i in range(n):
9 s += i
10
11 return s
我怎样才能让它工作?
PS:我使用 CMake,而不是setup.py
,所以我会很感激构建系统不可知的解决方案