[Python-3000] Draft PEP for New IO system
jimjjewett at gmail.com
Thu Mar 1 19:41:56 CET 2007
On 2/28/07, Daniel Stutzbach <daniel.stutzbach at gmail.com> wrote:
> What should Buffered I/O .write() do for a non-blocking object?
> It seems like the .write() should write as much as it can to the Raw
> I/O object and buffer the rest, but then how do we tell the Buffered
> I/O object to "write more data from the buffer but still don't block"?
The buffer layer should ensure that it gets written eventually, if
only at buffer finalization.
A (blocking) flush says "commit whatever you have *right now*".
Needing anything in between is probably rare enough that it makes
sense to let concrete objects handle it on their own, without a
standardized method. This semi-flush seems far less important than a
non-blocking read, which Guido has already said doesn't need
> Option #2: Calling .write() with no arguments causes the Buffer I/O
> object to flush as much write data to the raw object, but won't block.
Writing a zero-length string should probably give it another chance to
process the buffer if it wants to, but ... I don't think it should be
*forced* to try, if it doesn't think there is enough data yet. That
is what flush is for.
More information about the Python-3000