On Nov 17, 2007 8:14 PM, Kent Johnson <[EMAIL PROTECTED]> wrote: > Marc Tompkins wrote: > > My question is this: does anybody know of an equivalent to > > "readlines(sizehint)" for non-delimited, binary files? I've Googled > > and Googled until I'm groggy, but I don't seem to find what I want. > > Have you tried specifying a buffer size in the open() call? > > Kent >
Yes. I compared: - no buffer size specified - any of a wide range of positive numbers (from 1 to 4M) - -1 and saw no noticeable difference - as opposed to adding the StringIO buffering, which kicked things up by a notch of six or so. By the way, this is really obscurely documented. It took me a lot of Googling to find even one mention of it - in Programming Python by Mark Lutz - and I was very excited... until I tested it and found that it did nothing for me. Bummer. Then I re-read the passage: > *Buffer size* > > The open call also takes an optional third buffer size argument, which > lets you control stdio buffering for the file -- the way that data is > queued up before being transferred to boost performance. If passed, means > file operations are unbuffered (data is transferred immediately), 1 means > they are line buffered, any other positive value means use a buffer of > approximately that size, and a negative value means to use the system > default (which you get if no third argument is passed, and generally means > buffering is enabled). The buffer size argument works on most platforms, but > is currently ignored on platforms that don't provide the sevbuf system > call. > I've only tested on Windows XP; is XP one of those that don't provide sevbuf? (Actually, I think that's a typo - I think it should be "setvbuf" - but it exists in both the 2001 and 2006 editions of the book.) Perhaps someone who codes closer to the silicon can enlighten me on that score. I just realized that the one thing I didn't try was passing a value of 0 to turn buffering OFF - if, as the above passage seems to suggest, it's always on by default. I might try that tomorrow. But in any case it looks like all it'll do is make things slower. -- www.fsrtechnologies.com
_______________________________________________ Tutor maillist - Tutor@python.org http://mail.python.org/mailman/listinfo/tutor