[Python-3000] Google Sprint Ideas (original) (raw)

Alexander Belopolsky alexander.belopolsky at gmail.com
Mon Aug 21 06:43:53 CEST 2006


On Aug 21, 2006, at 12:01 AM, Martin v. Löwis wrote:

Alexander Belopolsky schrieb:

For Py3k, I would like to suggest a buffer protocol modelled after iovec structure that is used by the readv system call. On many systems readv is more efficient than repeated calls to read and I think Py3k will benefit from a direct access to that feature. -1

What is this -1 for:

a) buffer protocol in Py3k? b) multisegment buffer protocol? c) readinto that supports multisegment buffers?

Note that in 2.x buffer protocol is multisegment, but readinto only supports single-segment buffers.

It's difficult to use, and I question that there is any benefit.

I often deal with the system (kx.com) that represents matrices as nested lists (1d lists of floats are contiguous). My matrices are stored on disk as C-style 2d arrays. If fileinto would support multisegment buffers, I would be able to update in-memory data from files on disk just with a call to it. Currently I have to do it in a loop.

I believe readv is there primarily for symmetry with writev and hasn't any sensible uses on its own. writev is there so you can add additional headers/trailers around data blocks you received from higher layers. I even doubt that exposing writev in Python would make a measurable performance difference.

I did not suggest to expose anything in Python. AFAIK, the buffer
protocol is a C API only.



More information about the Python-3000 mailing list