the pipe reading in Thread dose not work.

Leon zhang leoncamel at gmail.com
Sun Jun 1 10:32:39 EDT 2008


#!/usr/bin/env python
# -*- coding: utf-8 -*-

import string, sys
from threading import Thread
import os
import time

class test_pipe(Thread):
    def __init__(self, fd):
        Thread.__init__(self)
        self.testfd = fd

    def run(self):
        print "started thread begin -----"
        while True:
            buf = self.testfd.read()
            print "receive %s" % (buf)
            time.sleep(1)
            #print "hoho"

if __name__ == "__main__":

    stdin_r, stdin_w = os.pipe()
    #stdout_r, stdout_w = pipe()

    f_w = os.fdopen(stdin_w, "w", 0)

    thrd = test_pipe(os.fdopen(stdin_r, "r", 0))
    thrd.start()

    time.sleep(1)

    while True:
        f_w.write("help\r\n")
        time.sleep(1)

    thrd.join()
--------------------------------------------
well, I want the following small test about pipe() in thread().
OK, I write to the pipe in the main thread, and I created a new thread
for reading from the pipe, then it will print what it received from
the pipe().

But, it seems it block at the "self.testfd.read()".

So, is there and suggestion and explaination about it?

Thanks in advance.



More information about the Python-list mailing list