Python论坛  - 讨论区

标题:Re: Re: RE: [python-chinese] what's wrong with my code using subprocess?

2005年07月25日 星期一 10:10

寒号鸟 gs7510 at 163.com
Mon Jul 25 10:10:17 HKT 2005

你们发什么神精,你们聊天的邮件干什么发到我的邮箱上.

> 我也开始Py了
> 
> 	
> 
> ======= 2005-07-24 22:57:57 您在来信中写道:=======
> 
> >当Collector接收到'exit'退出时,Receiver仍然会向Collector发送'exit'字符串,所
> >以会Broken pipe。
> >
> >以下的代码在Windows和Debian上都没有问题。
> >改动了Receiver
> >
> ># receiver.py (the main program)
> >from subprocess import Popen, PIPE
> >
> >def main():
> >    p = Popen(['python', 'collector.py'], stdout=PIPE, stdin=PIPE)
> >    keep_going = False
> >    count = 0
> >    for line in p.stdout:
> >        data = line.strip()
> >        print 'Receiver: ' + line
> >        # process(data)
> >        count += 1
> >        if count >= 1000:
> >            if keep_going  == False:
> >               print >> p.stdin, 'exit'
> >               keep_going = True
> >            print 'waiting subprocess exit'
> >            p.wait()
> >
> >if __name__ == '__main__':
> >    main()
> >#end of receiver.py
> >
> >__
> >Best Regards,
> > 
> >Kebo Wang
> >
> >
> >_______________________________________________
> >python-chinese list
> >python-chinese at lists.python.cn
> >http://python.cn/mailman/listinfo/python-chinese
> 
> = = = = = = = = = = = = = = = = = = = =
> 			
> 
>         致
> 礼!
>  
> 				 
>         cn-poper
>         cn-poper at 126.com
>           2005-07-25
> 
> 
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.exoweb.net/pipermail/python-chinese/attachments/20050725/6cc69851/attachment.html

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2005年07月25日 星期一 10:29

cpunion cpunion at 263.net
Mon Jul 25 10:29:22 HKT 2005

管理员直接把他删除吧,他不知道自己怎么加进来的,也不知道这里是做什么的。

寒号鸟 wrote:
> 你们发什么神精,你们聊天的邮件干什么发到我的邮箱上.


[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2005年07月25日 星期一 14:10

shhgs shhgs.efhilt at gmail.com
Mon Jul 25 14:10:11 HKT 2005

我感觉好像只有一个进程结束了才会去读写另一个进程的stdin和stdout。

下面是我写的两个程序,我也没理出头绪,写出来给大家参考一下
################################################################
#   caller.py
################################################################
from subprocess import Popen, PIPE
from time import sleep

sp = Popen(["python", 'callee.py'], stdin = PIPE)
sleep(2)
print "\n\nwriting exit \n\n"
sp.stdin.write("exit")
sp.stdin.flush()
sleep(4)
print "\n\nwriting exit\n\n"
sp.stdin.write('exit')


################################################################
#   callee.py
################################################################
import sys, string, random
import threading, time

class Main(object) :
    def __init__(self) :
        self.flag = True
        self.thread = threading.Thread(target = self.work)
        self.thread.setDaemon(1)
        self.thread2 = threading.Thread(target = self.stop)
        self.thread2.setDaemon(1)
        self.thread.start()
        self.thread2.start()
        self.thread.join()
        self.thread2.join()
    def stop(self) :
        s = time.time()
        while 1 :
            if time.time() - s > 10 :
                print "Timeout!!"
                self.flag = False
                return
            try :
                t = sys.stdin.read()
                self.flag = False
                return
            except :
                time.sleep(0.3)
    def work(self) :
        while self.flag :
            num = random.choice(range(8, 20))
            s = string.letters + string.digits + string.punctuation
            result = ""
            for i in range(num) :
                result += random.choice(s)
            result += "\n"
            sys.stdout.write(result)
            sys.stdout.flush()
            time.sleep(0.5)

if __name__ == "__main__" :
    start = time.time()
    Main()
    print "\n\n"
    print time.time() - start

往callee的stdin里面写东西根本没用。只有caller结束,callee才会收到东西。用flush都没用


On 7/24/05, cpunion <cpunion at 263.net> wrote:
> 管理员直接把他删除吧,他不知道自己怎么加进来的,也不知道这里是做什么的。
> 
> 寒号鸟 wrote:
> > 你们发什么神精,你们聊天的邮件干什么发到我的邮箱上.
> 
> _______________________________________________
> python-chinese list
> python-chinese at lists.python.cn
> http://python.cn/mailman/listinfo/python-chinese
>

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

如下红色区域有误,请重新填写。

    你的回复:

    请 登录 后回复。还没有在Zeuux哲思注册吗?现在 注册 !

    Zeuux © 2025

    京ICP备05028076号