C API: array of floats/ints from python to C and back
Aaron Brady
castironpi at gmail.com
Sat Dec 27 19:40:39 EST 2008
On Dec 27, 6:06 pm, Scott David Daniels <Scott.Dani... at Acm.Org> wrote:
> Daniel Fetchinson wrote:
> >.... I have a list to begin with which will be passed to the C function.
>
> > I assume converting the list to an array.array and passing that to the C
>
> > function doesn't make any difference in terms of speed since the
> > operation itself will be done in the C function anyway.
>
> Right, but why bother to do the conversion in C where you'll have to
> fiddle with refcounts and error propogation? convert in python, and
> go to the underlying data in C.
I think you could use ctypes.c_int* 20, which is an awesome data
type-- a 20-element array of integers. You could also use this, which
I just discovered, and is actually moderately disturbing.
#WARNING unsafe code
>>> from ctypes import *
>>> i= c_int(42)
>>> pi= pointer(i)
>>> pi[0]
42
>>> pi[1]
0
>>> pi[2]
0
>>> pi[1]= 20
>>> pi
<__main__.LP_c_long object at 0x00A97D00>
>>> pi[1]
20
What memory is it overwriting?
More information about the Python-list
mailing list