Python论坛  - 讨论区

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

2005年07月24日 星期日 23:36

cpunion cpunion at 263.net
Sun Jul 24 23:36:52 HKT 2005

我认为你对于这里Broken pipe的解释是正确的,不过我没有遇到这个问题。你们
的2个版本在我的windows server 2003上存在的问题是,程序无法结束,p.wait()
阻塞。

把p.wait()去掉,发现打印出'waiting subprocess exit'后又经过100多次循环,
for line in p.stdout才结束。猜想是必须在父进程中把pipe读完,子进程才真正
退出。

根据上面这个猜想,和Wang Kebo的代码,改了一个在我的系统中能正常运行的版
本,以for line in p.stdout: pass代替p.wait():

# 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 >= 3:
if keep_going == False:
print >> p.stdin, 'exit'
keep_going = True
print 'waiting subprocess exit'
for line in p.stdout: pass
break

if __name__ == '__main__':
main()

Wang Kebo wrote:

>当Collector接收到'exit'退出时,Receiver仍然会向Collector发送'exit'字符串,所
>以会Broken pipe。
>
>以下的代码在Windows和Debian上都没有问题。
>改动了Receiver
>  
>



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

2005年07月24日 星期日 23:55

cpunion cpunion at 263.net
Sun Jul 24 23:55:08 HKT 2005

为何我发的代码都没有格式了??

这里还可以减几行:

        if count >= 3:
            print >> p.stdin, 'exit'
            print 'waiting subprocess exit'
	    for line in p.stdout: pass
	    break
即可。

cpunion wrote:

>我认为你对于这里Broken pipe的解释是正确的,不过我没有遇到这个问题。你们
>的2个版本在我的windows server 2003上存在的问题是,程序无法结束,p.wait()
>阻塞。
>
>把p.wait()去掉,发现打印出'waiting subprocess exit'后又经过100多次循环,
>for line in p.stdout才结束。猜想是必须在父进程中把pipe读完,子进程才真正
>退出。
>
>根据上面这个猜想,和Wang Kebo的代码,改了一个在我的系统中能正常运行的版
>本,以for line in p.stdout: pass代替p.wait():
>
># 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 >= 3:
>if keep_going == False:
>print >> p.stdin, 'exit'
>keep_going = True
>print 'waiting subprocess exit'
>for line in p.stdout: pass
>break
>
>if __name__ == '__main__':
>main()
>
>Wang Kebo wrote:
>
>  
>
>>当Collector接收到'exit'退出时,Receiver仍然会向Collector发送'exit'字符串,所
>>以会Broken pipe。
>>
>>以下的代码在Windows和Debian上都没有问题。
>>改动了Receiver
>> 
>>
>>    
>>
>
>
>_______________________________________________
>python-chinese list
>python-chinese at lists.python.cn
>http://python.cn/mailman/listinfo/python-chinese
>
>
>  
>


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

2005年07月25日 星期一 08:03

Wang Kebo mep_ at 163.com
Mon Jul 25 08:03:18 HKT 2005

在不使用wait()的情况(或者wait没有block)下 ,代码就能够正确退出。
结合Google上的信息,猜测是receiver写到pipe的字符串'exit'被buffer了。
但根据Python的文档,缺省Popen是不会Buffer的,另外我尝试了其他的几种方式
来避免Buffer,包括:

1、在两部分代码中使用python -u;
2、不用print,采用stdin.write,并flush()

都没有成功。

__
Best Regards,
 
Kebo Wang


>-----Original Message-----
>From: python-chinese-bounces at lists.python.cn 
>[mailto:python-chinese-bounces at lists.python.cn] On Behalf Of cpunion
>Sent: Sunday, July 24, 2005 11:37 PM
>To: python-chinese at lists.python.cn
>Subject: Re: [python-chinese] what's wrong with my code using 
>subprocess?
>
>我认为你对于这里Broken pipe的解释是正确的,不过我没有遇到这个问题。你们
>的2个版本在我的windows server 2003上存在的问题是,程序无法结束,p.wait()
>阻塞。
>
>把p.wait()去掉,发现打印出'waiting subprocess exit'后又经过100多次循环,
>for line in p.stdout才结束。猜想是必须在父进程中把pipe读完,子进程才真正
>退出。
>
>根据上面这个猜想,和Wang Kebo的代码,改了一个在我的系统中能正常运行的版
>本,以for line in p.stdout: pass代替p.wait():
>
># 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 >= 3:
>if keep_going == False:
>print >> p.stdin, 'exit'
>keep_going = True
>print 'waiting subprocess exit'
>for line in p.stdout: pass
>break
>
>if __name__ == '__main__':
>main()
>
>Wang Kebo wrote:
>
>>当Collector接收到'exit'退出时,Receiver仍然会向Collector发送'exit'字符串,
所
>>以会Broken pipe。
>>
>>以下的代码在Windows和Debian上都没有问题。
>>改动了Receiver
>>  
>>
>
>
>_______________________________________________
>python-chinese list
>python-chinese at lists.python.cn
>http://python.cn/mailman/listinfo/python-chinese
>

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

2005年07月25日 星期一 08:58

xu.shengyong zjxushengyong at hotmail.com
Mon Jul 25 08:58:31 HKT 2005

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.exoweb.net/pipermail/python-chinese/attachments/20050725/a7be905c/attachment.html

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

2005年07月25日 星期一 09:01

fei feiyafei at gmail.com
Mon Jul 25 09:01:42 HKT 2005

这本书肯定有,自己找找就是了。另外一本类似的书籍:
Python.Programming.on.MS.Windows.在emule可以下载到




xu.shengyong 写道:

>------------------------------------------------------------------------
>
>_______________________________________________
>python-chinese list
>python-chinese at lists.python.cn
>http://python.cn/mailman/listinfo/python-chinese
>  
>


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

2005年07月25日 星期一 09:23

xu.shengyong zjxushengyong at hotmail.com
Mon Jul 25 09:23:24 HKT 2005

我google了一下,好象没有电子版可以看的, :(

----- Original Message ----- 
From: "fei" <feiyafei at gmail.com>
To: <python-chinese at lists.python.cn>
Sent: Monday, July 25, 2005 9:01 AM
Subject: Re: [python-chinese] 大家早上好啊!请问网络上有没有《Python Programming on Win32》这本书的电子版本,麻烦告诉一下网址,谢谢!


> 这本书肯定有,自己找找就是了。另外一本类似的书籍:
> Python.Programming.on.MS.Windows.在emule可以下载到
> 
> 
> 
> 
> xu.shengyong 写道:
> 
>>------------------------------------------------------------------------
>>
>>_______________________________________________
>>python-chinese list
>>python-chinese at lists.python.cn
>>http://python.cn/mailman/listinfo/python-chinese
>>  
>>
> 
> _______________________________________________
> python-chinese list
> python-chinese at lists.python.cn
> http://python.cn/mailman/listinfo/python-chinese
>

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

2005年07月25日 星期一 09:37

Liming_Do Liming_Do at smics.com
Mon Jul 25 09:37:42 HKT 2005

社区早就有人共享出来了,里面有你需要的是这本吧
http://www.woodpecker.org.cn/share/doc/Python/OReilly%20-%20Python%20Programming%20on%20Win32%20%5bmiex.org%5d.chm

-----原始邮件-----
发件人: python-chinese-bounces at lists.python.cn
[mailto:python-chinese-bounces at lists.python.cn]代表 xu.shengyong
发送时间: 2005年7月25日 9:23
收件人: python-chinese at lists.python.cn
主题: Re: [python-chinese] 大家早上好啊!请问网络上有没有《Python
Programming on Win32》这本书的电子版本,麻烦告诉一下网址,谢谢!


我google了一下,好象没有电子版可以看的, :(

----- Original Message ----- 
From: "fei" <feiyafei at gmail.com>
To: <python-chinese at lists.python.cn>
Sent: Monday, July 25, 2005 9:01 AM
Subject: Re: [python-chinese] 大家早上好啊!请问网络上有没有《Python Programming on Win32》这本书的电子版本,麻烦告诉一下网址,谢谢!


> 这本书肯定有,自己找找就是了。另外一本类似的书籍:
> Python.Programming.on.MS.Windows.在emule可以下载到
> 
> 
> 
> 
> xu.shengyong 写道:
> 
>>------------------------------------------------------------------------
>>
>>_______________________________________________
>>python-chinese list
>>python-chinese at lists.python.cn
>>http://python.cn/mailman/listinfo/python-chinese
>>  
>>
> 
> _______________________________________________
> python-chinese list
> python-chinese at lists.python.cn
> http://python.cn/mailman/listinfo/python-chinese
>

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

2005年07月25日 星期一 09:51

limodou limodou at gmail.com
Mon Jul 25 09:51:52 HKT 2005

好象没有,只有代码下载。

在 05-7-25,xu.shengyong<zjxushengyong at hotmail.com> 写道:
> 我google了一下,好象没有电子版可以看的, :(
> 
> ----- Original Message -----
> From: "fei" <feiyafei at gmail.com>
> To: <python-chinese at lists.python.cn>
> Sent: Monday, July 25, 2005 9:01 AM
> Subject: Re: [python-chinese] 大家早上好啊!请问网络上有没有《Python Programming on Win32》这本书的电子版本,麻烦告诉一下网址,谢谢!
> 
> 
> > 这本书肯定有,自己找找就是了。另外一本类似的书籍:
> > Python.Programming.on.MS.Windows.在emule可以下载到
> >
> >
> >
> >
> > xu.shengyong 写道:
> >
> >>------------------------------------------------------------------------
> >>
> >>_______________________________________________
> >>python-chinese list
> >>python-chinese at lists.python.cn
> >>http://python.cn/mailman/listinfo/python-chinese
> >>
> >>
> >
> > _______________________________________________
> > python-chinese list
> > python-chinese at lists.python.cn
> > http://python.cn/mailman/listinfo/python-chinese
> >
> _______________________________________________
> python-chinese list
> python-chinese at lists.python.cn
> http://python.cn/mailman/listinfo/python-chinese
> 
> 
> 


-- 
I like python! 
My Donews Blog: http://www.donews.net/limodou
New Google Maillist: http://groups-beta.google.com/group/python-cn

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

2005年07月25日 星期一 09:52

limodou limodou at gmail.com
Mon Jul 25 09:52:44 HKT 2005

我说错了,这本书有下载。

在 05-7-25,limodou<limodou at gmail.com> 写道:
> 好象没有,只有代码下载。
> 
> 在 05-7-25,xu.shengyong<zjxushengyong at hotmail.com> 写道:
> > 我google了一下,好象没有电子版可以看的, :(
> >
> > ----- Original Message -----
> > From: "fei" <feiyafei at gmail.com>
> > To: <python-chinese at lists.python.cn>
> > Sent: Monday, July 25, 2005 9:01 AM
> > Subject: Re: [python-chinese] 大家早上好啊!请问网络上有没有《Python Programming on Win32》这本书的电子版本,麻烦告诉一下网址,谢谢!
> >
> >
> > > 这本书肯定有,自己找找就是了。另外一本类似的书籍:
> > > Python.Programming.on.MS.Windows.在emule可以下载到
> > >
> > >
> > >
> > >
> > > xu.shengyong 写道:
> > >
> > >>------------------------------------------------------------------------
> > >>
> > >>_______________________________________________
> > >>python-chinese list
> > >>python-chinese at lists.python.cn
> > >>http://python.cn/mailman/listinfo/python-chinese
> > >>
> > >>
> > >
> > > _______________________________________________
> > > python-chinese list
> > > python-chinese at lists.python.cn
> > > http://python.cn/mailman/listinfo/python-chinese
> > >
> > _______________________________________________
> > python-chinese list
> > python-chinese at lists.python.cn
> > http://python.cn/mailman/listinfo/python-chinese
> >
> >
> >
> 
> 
> --
> I like python!
> My Donews Blog: http://www.donews.net/limodou
> New Google Maillist: http://groups-beta.google.com/group/python-cn
> 


-- 
I like python! 
My Donews Blog: http://www.donews.net/limodou
New Google Maillist: http://groups-beta.google.com/group/python-cn

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

2005年07月25日 星期一 09:55

limodou limodou at gmail.com
Mon Jul 25 09:55:47 HKT 2005

不要用tab要用空格。

在 05-7-24,cpunion<cpunion at 263.net> 写道:
> 为何我发的代码都没有格式了??
> 
> 这里还可以减几行:
> 
>         if count >= 3:
>             print >> p.stdin, 'exit'
>             print 'waiting subprocess exit'
>             for line in p.stdout: pass
>             break
> 即可。
> 
> cpunion wrote:
> 
> >我认为你对于这里Broken pipe的解释是正确的,不过我没有遇到这个问题。你们
> >的2个版本在我的windows server 2003上存在的问题是,程序无法结束,p.wait()
> >阻塞。
> >
> >把p.wait()去掉,发现打印出'waiting subprocess exit'后又经过100多次循环,
> >for line in p.stdout才结束。猜想是必须在父进程中把pipe读完,子进程才真正
> >退出。
> >
> >根据上面这个猜想,和Wang Kebo的代码,改了一个在我的系统中能正常运行的版
> >本,以for line in p.stdout: pass代替p.wait():
> >
> ># 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 >= 3:
> >if keep_going == False:
> >print >> p.stdin, 'exit'
> >keep_going = True
> >print 'waiting subprocess exit'
> >for line in p.stdout: pass
> >break
> >
> >if __name__ == '__main__':
> >main()
> >
> >Wang Kebo wrote:
> >
> >
> >
> >>当Collector接收到'exit'退出时,Receiver仍然会向Collector发送'exit'字符串,所
> >>以会Broken pipe。
> >>
> >>以下的代码在Windows和Debian上都没有问题。
> >>改动了Receiver
> >>
> >>
> >>
> >>
> >
> >
> >_______________________________________________
> >python-chinese list
> >python-chinese at lists.python.cn
> >http://python.cn/mailman/listinfo/python-chinese
> >
> >
> >
> >
> 
> _______________________________________________
> python-chinese list
> python-chinese at lists.python.cn
> http://python.cn/mailman/listinfo/python-chinese
> 


-- 
I like python! 
My Donews Blog: http://www.donews.net/limodou
New Google Maillist: http://groups-beta.google.com/group/python-cn

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

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

xu.shengyong zjxushengyong at hotmail.com
Mon Jul 25 10:18:12 HKT 2005

多谢 Liming_Do !

我在网上找了很长时间了。踏破铁鞋无觅处,得来全不费功夫,:)



----- Original Message ----- 
From: "Liming_Do" <Liming_Do at smics.com>
To: <python-chinese at lists.python.cn>
Sent: Monday, July 25, 2005 9:37 AM
Subject: 答复: [python-chinese] 大家早上好啊!请问网络上有没有《Python Programming on Win32》这本书的电子版本,麻烦告诉一下网址,谢谢!


社区早就有人共享出来了,里面有你需要的是这本吧
http://www.woodpecker.org.cn/share/doc/Python/OReilly%20-%20Python%20Programming%20on%20Win32%20%5bmiex.org%5d.chm

-----原始邮件-----
发件人: python-chinese-bounces at lists.python.cn
[mailto:python-chinese-bounces at lists.python.cn]代表 xu.shengyong
发送时间: 2005年7月25日 9:23
收件人: python-chinese at lists.python.cn
主题: Re: [python-chinese] 大家早上好啊!请问网络上有没有《Python
Programming on Win32》这本书的电子版本,麻烦告诉一下网址,谢谢!


我google了一下,好象没有电子版可以看的, :(

----- Original Message ----- 
From: "fei" <feiyafei at gmail.com>
To: <python-chinese at lists.python.cn>
Sent: Monday, July 25, 2005 9:01 AM
Subject: Re: [python-chinese] 大家早上好啊!请问网络上有没有《Python Programming on Win32》这本书的电子版本,麻烦告诉一下网址,谢谢!


> 这本书肯定有,自己找找就是了。另外一本类似的书籍:
> Python.Programming.on.MS.Windows.在emule可以下载到
> 
> 
> 
> 
> xu.shengyong 写道:
> 
>>------------------------------------------------------------------------
>>
>>_______________________________________________
>>python-chinese list
>>python-chinese at lists.python.cn
>>http://python.cn/mailman/listinfo/python-chinese
>>  
>>
> 
> _______________________________________________
> python-chinese list
> python-chinese at lists.python.cn
> http://python.cn/mailman/listinfo/python-chinese
>
_______________________________________________
python-chinese list
python-chinese at lists.python.cn
http://python.cn/mailman/listinfo/python-chinese

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

2005年07月25日 星期一 15:16

苏州长风网络 kinnsei at gmail.com
Mon Jul 25 15:16:34 HKT 2005

我好像有,哈。。


在 05-7-25,xu.shengyong<zjxushengyong at hotmail.com> 写道:
> 多谢 Liming_Do !
> 
> 我在网上找了很长时间了。踏破铁鞋无觅处,得来全不费功夫,:)
> 
> 
> 
> ----- Original Message -----
> From: "Liming_Do" <Liming_Do at smics.com>
> To: <python-chinese at lists.python.cn>
> Sent: Monday, July 25, 2005 9:37 AM
> Subject: 答复: [python-chinese] 大家早上好啊!请问网络上有没有《Python Programming on Win32》这本书的电子版本,麻烦告诉一下网址,谢谢!
> 
> 
> 社区早就有人共享出来了,里面有你需要的是这本吧
> http://www.woodpecker.org.cn/share/doc/Python/OReilly%20-%20Python%20Programming%20on%20Win32%20%5bmiex.org%5d.chm
> 
> -----原始邮件-----
> 发件人: python-chinese-bounces at lists.python.cn
> [mailto:python-chinese-bounces at lists.python.cn]代表 xu.shengyong
> 发送时间: 2005年7月25日 9:23
> 收件人: python-chinese at lists.python.cn
> 主题: Re: [python-chinese] 大家早上好啊!请问网络上有没有《Python
> Programming on Win32》这本书的电子版本,麻烦告诉一下网址,谢谢!
> 
> 
> 我google了一下,好象没有电子版可以看的, :(
> 
> ----- Original Message -----
> From: "fei" <feiyafei at gmail.com>
> To: <python-chinese at lists.python.cn>
> Sent: Monday, July 25, 2005 9:01 AM
> Subject: Re: [python-chinese] 大家早上好啊!请问网络上有没有《Python Programming on Win32》这本书的电子版本,麻烦告诉一下网址,谢谢!
> 
> 
> > 这本书肯定有,自己找找就是了。另外一本类似的书籍:
> > Python.Programming.on.MS.Windows.在emule可以下载到
> >
> >
> >
> >
> > xu.shengyong 写道:
> >
> >>------------------------------------------------------------------------
> >>
> >>_______________________________________________
> >>python-chinese list
> >>python-chinese at lists.python.cn
> >>http://python.cn/mailman/listinfo/python-chinese
> >>
> >>
> >
> > _______________________________________________
> > python-chinese list
> > python-chinese at lists.python.cn
> > http://python.cn/mailman/listinfo/python-chinese
> >
> _______________________________________________
> python-chinese list
> python-chinese at lists.python.cn
> http://python.cn/mailman/listinfo/python-chinese
> 
> _______________________________________________
> python-chinese list
> python-chinese at lists.python.cn
> http://python.cn/mailman/listinfo/python-chinese
> 
> 
> 


-- 
苏州长风网络
QQ:104609351

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

2005年07月25日 星期一 17:49

Leo Jay python.leojay at gmail.com
Mon Jul 25 17:49:53 HKT 2005

有没有有关twisted的资料啊。看到头大了……


-- 
Best Regards,
Leo Jay

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

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

    你的回复:

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

    Zeuux © 2025

    京ICP备05028076号