我有一个使用READ_EXTERNAL_STORAGE
和Environment.getExternalStorageDirectory().getPath()
来解决优化问题的应用程序。我通过pandas
进行了cython设置,在我的模块中有:
cvxpy
运行程序时,我可以看到gcc正在编译代码。但是,当我使用pyximport.install(setup_args={'include_dirs': np.get_include()})
进行优化时,结果如下:
cimport numpy as np
import numpy as np
如您所见,%prun
是花费最多时间的函数,因此,如果可能的话,我想对此进行cythonize处理。它是 ncalls tottime percall cumtime percall filename:lineno(function)
13 95.403 7.339 95.627 7.356 decomp.py:270(eigh)
39 7.826 0.201 8.968 0.230 numeric.py:2319(within_tol)
13 5.756 0.443 5.756 0.443 {built-in method _ecos.csolve}
13 4.805 0.370 5.118 0.394 decomp.py:118(eig)
729 4.714 0.006 4.714 0.006 {built-in method _cvxcore.LinOp_set_dense_data}
1 2.398 2.398 138.383 138.383 <string>:1(<module>)
13 2.073 0.159 97.705 7.516 quad_form.py:147(decomp_quad)
91 1.140 0.013 1.140 0.013 {built-in method builtins.abs}
26 0.994 0.038 0.994 0.038 {method 'dot' of 'numpy.ndarray' objects}
1 0.571 0.571 4.045 4.045 {pandas._libs.reduction.reduce}
的一部分,我猜想我在使用decompy.py:eigh
时应该已经编译了,但是由于它是在scipy
中被调用的,所以我猜测它是在使用python版本而不是cython版本。我需要对cimport
进行cythonize使其使用cython cvxpy
吗?