non-blocking PIPE read on Windows
placid
Bulkan at gmail.com
Sun Jul 30 19:22:34 EDT 2006
Dennis Lee Bieber wrote:
> On 27 Jul 2006 22:26:25 -0700, "placid" <Bulkan at gmail.com> declaimed the
> following in comp.lang.python:
>
> >
> > readline() blocks until the newline character is read, but when i use
> > read(X) where X is a number of bytes then it doesnt block(expected
> > functionality) but i dont know how many bytes the line will be and its
> > not constant so i cant use this too.
> >
> > Any ideas of solving this problem?
> >
> Use a thread that reads one character at a time; when it sees
> whatever signals "end of line" (it sounds like you're reading a progress
> bar implemented via <cr>overwrite). Combine the characters into a
> string, return the string to the main program via a queue.
>
Yes it is a progress bar implemented via <cr> overwrite. I will try
this.
> If there is no such "end of line" character, but there IS a
> noticeable delay between "writes", a more complex method might suffice
> -- in which one thread does the byte reads, setting a time value on each
> read; a related thread then does a sleep() loop, checking the "last read
> time" against the pause length -- if close enough to the pause duration,
> combine and return...
i dont think there is a noticeable delay between "writes".
> Alternatively, take a good old style terminal keyboard (a VT100
> Tempest-rated model should be ideal), and use it to beat Bill Gates over
> the head until he agrees to push a high-priority upgrade to the command
> line I/O system... or makes files work with select() (so you can combine
> the time-out with the byte read)
;) Tsk Tsk
More information about the Python-list
mailing list