1
나는 cffi를 사용하는 법을 배우려고 노력하고있다. 그러나 나는 C에 상당히 익숙하기 때문에 조금 까다 롭다. 나는 두 배의 배열의 합을 계산하는 간단한 함수로 연습하고있다. 이상하게도 내 합계 함수가 올바른 출력을 제공하지 않습니다. 왜 누군가는 볼 수 있습니까? 어레이를 올바르게 취급합니까? 내가 numpy 배열을 포인터로 던져야하는 이유를 이해하지 못한다.Python PYPY Numpy 배열이있는 Cffi
from cffi import FFI
import numpy as np
ffi = FFI()
ffi.cdef("""
double sum(double[], int);
""")
C = ffi.verify("""
double sum(double numbers[],int num_elements){
int i, sum=0.0;
for (i=0; i<num_elements; i++)
{
sum = sum + numbers[i];
}
return(sum);
}
""")
numbers = np.random.gamma(1,1,100)
print 'numpy', sum(numbers)
numbers_p = ffi.cast('double *',numbers.ctypes.data)
sm = C.sum(numbers_p, len(numbers))
print 'cffi', sm
출력 : 결과가 좋은 평판 정수 얼마나
numpy 119.436940423
cffi 80.0