Вот как я бы предложил цитонизировать. Создайте файл setup.py
:
from setuptools import setup
from Cython.Build import cythonize
setup(
ext_modules = cythonize("function.pyx")
)
Тогда ваш файл function.pyx
в основном будет вашим python кодом:
import numpy as np
def f_passagetime_rec_cython(L,start=[0,0]):
T=10000000
r = np.zeros((T,2))
r[0]=start
delta = 1
greater=False
for i in range (0,T - 1):
if r[i,0]<=L:
theta = np.random.uniform(0, 2*np.pi, size = None)
r[i + 1,0] = r[i,0] + np.cos(theta)*delta
r[i + 1,1] = r[i,1] + np.sin(theta)*delta
else:
greater=True
return i
if greater==False:
x=f_passagetime_rec_cython(L,r[-1])
i=x+1+i
return i
Затем создайте функцию cythonised в терминале следующим образом:
python setup.py build_ext --inplace
Вы можете получить доступ к функции Cythonised, импортировав, используя стандартный синтаксис Python:
import function
function.f_passagetime_rec_cython(10)