[Tutor] thread and os.pipe (was: logic for a tree like structure)
Tiago Saboga
tiagosaboga at terra.com.br
Sat Dec 8 11:35:43 CET 2007
I started a message, changed my mind, wrote about some other thing and
forgot to change the subject. Sorry for the noise.
Tiago.
On Sat, Dec 08, 2007 at 07:25:16AM -0200, Tiago Saboga wrote:
> Hi,
>
> I need an additional thread in my app, and I am trying to understand
> how it works. Alas, all I found about threads is too simple (does not
> fit in my real life problem) or too complicated. The best thing I've
> read until now is the great tutorial by Norman Matloff, but it isn't
> enough. If you could point me to some more docs, it would be great.
> The python docs have been of no use for me in this case.
>
> Anyway, I am trying to play a little with it, and I can't understand
> what's happening in this simple example. I want to establish a
> connection between my two threads by a os.pipe, but it seems like I
> can only read the pipe when everything was done. I was hoping to see
> the output of writer.py come out in real time, but it is coming out
> all together when writer.py returns. Why?
>
> Thanks,
>
> Tiago Saboga.
>
> =====writer.py=======
>
> #!/usr/bin/python2.5
>
> import time
>
> for i in range(10):
> print 'Line number %s.' % i
> time.sleep(1)
>
> ======threadit.py=======
> #!/usr/bin/python2.5
>
> from __future__ import with_statement
> import thread
> import subprocess
> import os
>
> def run(out):
> subprocess.Popen(['./writer.py'], stdout=os.fdopen(out, 'w'))
>
> def main():
> out_r, out_w = os.pipe()
> thread.start_new_thread(run, (out_w,))
> with os.fdopen(out_r) as f:
> while True:
> line=f.readline()
> if line:
> print '[main]', line
>
> if __name__=='__main__':
> main()
> _______________________________________________
> Tutor maillist - Tutor at python.org
> http://mail.python.org/mailman/listinfo/tutor
>
More information about the Tutor
mailing list