Mike Klaas wrote:
Do you need to append, or are you just looking to create/manipulate an array with a bunch of c-float values?
Mostly real-life examples I've seen of this were creating an array from C values obtained from an external source, such as an on-disk file, or another process. The code example was a (simplified and de-C++-ized) snippet of actual code.
I find As{Write/Read}Buffer sufficient for most of these tasks.
They improve things, as shown in the second example, but they're still cumbersome to use for appending/initialization of the array.
(Note that you can get the size of the resulting c array more easily than you are by using PyObject_Length).
Note that AsWriteBuffer always gives you the buffer size anyway -- you can't pass bufsize==NULL. Since I have to call AsWriteBuffer in each iteration (because I don't know when the buffer will resize), calling PyObject_Length in addition to that doesn't buy much, if anything.
> I've included some example pyrex code that populates a new > array.array at c speed. [...]
cdef int NA NA = len(W1) W0 = array('d', [colTotal]) * NA
The thing is, when reading values from a file or a general iterator, you typically don't know the number of values in advance. If I did, I would probably use an approach similar to yours.
Thanks for the code -- even if it doesn't help in this case, I appreciate it as an instructing example of the advanced usage of Pyrex.
_______________________________________________ Python-Dev mailing list Python-Dev@python.org http://mail.python.org/mailman/listinfo/python-dev Unsubscribe: http://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com