On Tuesday, 3 March 2015 19:29:19 UTC, Serhiy Storchaka wrote: > On 03.03.15 18:07, Paul Moore wrote: > > Is it possible to say to a BufferedReader stream "give me all the bytes you > > have available in the buffer, or do one OS call and give me everything you > > get back"? The problem is that the "number of bytes" argument to read1() > > isn't optional, so I can't do available_bytes = fd.read1(). > > Just specify large size.
Thanks. Looking at the source, it appears that a large size will allocate a buffer that size for the data even if the amount actually read is small (thinking about it, of couse it has to, doh, because the syscall needs it). Anyway, it's a pretty microscopic risk in practice, and when I looked at them, the incremental codecs (codecs.iterdecode) really aren't that hard to use, so I can do it that way if it matters enough. For what it's worth, in case anyone wants to know, incremental decoding looks like this: def get(): while True: data = process.stdout.read(1000) if not data: break yield data for data in codecs.iterdecode(get(), encoding): sys.stdout.write(data) sys.stdout.flush() Thanks. Paul -- https://mail.python.org/mailman/listinfo/python-list