Могу ли я вызвать функцию Python из встроенного кода C (используя weave)?
Мотивация: у меня есть немного кода, который я хотел бы оптимизировать, и я определил узкое место в одной функции,После обычных уловок я обычно обращаюсь к scipy.weave.inline для оптимизации.К сожалению, в этом случае моя функция вызывает другую функцию python во внутреннем цикле.Я позаботился о том, чтобы внутренняя функция не вызывала проблемы со скоростью, и я действительно не хочу писать ее также на C.
Минимальный пример:
from weave import inline
def foo(x):
return x*2
def bar():
a = 0
for i in xrange(10):
a += foo(i)
return a
def bar_weave():
code = """
int a = 0;
for (int i=0;i<10;++i){
a += foo(i); //<<-- what I'd like to do, but doesn't work
}
return_val = a;"""
return inline(code,['foo'])
print bar()
print bar_weave()