[Cython] Array parameter...
Robert Bradshaw
robertwb at math.washington.edu
Fri Jan 2 22:11:08 CET 2009
On Jan 2, 2009, at 1:02 PM, Magnus Lie Hetland wrote:
> Hi!
>
> I'm writing a method of an extension class that will take an array as
> an argument (or, rather, a pointer and a size, for example). Now, I
> don't, strictly speaking, need to access this method from Python
> (i.e., it can be internal to the Cython code), but I'm writing my unit
> tests in Python, so it'd be nice... On the other hand, I'm thinking I
> wouldn't want to use list or the like as the type (in a cpdef) just to
> accomplish this, as that would, most likely, slow things down in
> actual Cython-to-Cython (or C-to-C) calls.
Using a list to wrap a list of doubles will *vastly* slow things
down, probably by a factor of 100 or more.
> Is there a standard way of doing this sort of thing? My thinking is
> that I can write a simple wrapper for the Python use, which does the
> proper conversion, but I don't know if that's ideal... (It doesn't
> *have* to be an array. I just need to pass in a variable number of
> doubles in an efficient manner.)
The standard way to do things now is to write a cdef function that
takes a double* and length argument, then write a python wrapper for
testing. You could also look at using NumPy arrays with the buffer
interface, depending on what you're doing.
- Robert
More information about the Cython-dev
mailing list