$ cat calc_pi.pyx
# cython: profile=True
# cython: language_level=3
# cython linetrace=True
# calc_pi.pyx
cimport cython
@cython.profile(False)
def recip_square(int i):
return 1. / i ** 2
def approx_pi(int n=10000000):
cdef double val = 0.
cdef int k
for k in range(1, n + 1):
val += recip_square(k)
return (6 * val) ** .5
$ cat runme.py
import calc_pi
import argparse
def main():
parser = argparse.ArgumentParser(prog='{0}'.format(__file__))
parser.add_argument("-i", "--index", help="specify number", type=int)
args = parser.parse_args()
num = int(args.index)
print(calc_pi.approx_pi(num))
if __name__ == "__main__":
main()
Вопрос> Я видел, как профилировать отдельные функции Cython, такие как calc_pi.approx_pi
.Однако у меня есть проблемы с профилированием этих функций с помощью вызывающего скрипта Python.
Например, предположим, что вы не можете напрямую профилировать функцию calc_pi.approx_pi
, потому что вам нужны некоторые параметры / предварительная обработка из скрипта Python (т.е. runme.py
).
Есть ли способ, которым я могу профилировать calc_pi.approx_pi
через вызов runme.py
?
Спасибо