Как сделать ссылку на Cython NumPy - PullRequest
0 голосов
/ 05 марта 2019

У меня есть приложение, которое использует pandas и cvxpy для решения проблемы оптимизации.У меня есть настройка Cython через pyximport.install(setup_args={'include_dirs': np.get_include()}) и в моих модулях:

cimport numpy as np
import numpy as np

Когда я запускаю программу, я вижу, что gcc компилирует код.Однако, когда я оптимизирую с помощью %prun, это будет результат:

   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, которую, я полагаю, уже следует скомпилировать, когда я использую cimport, но поскольку она вызывается в cvxpy, я предполагаю, что она использует версию Python, а не версию Cython.Нужно ли цифонизировать cvxpy, чтобы использовать cython numpy?

...