2005年07月13日 星期三 16:39
hi: 两个python进程间如何实现通信? 我试过subprocess.Popen,但我实在没法理解Popen.communicate的用法。-__-b 现在我只需要实现由第一个进程A生成进程B(都是python程序),并由A向B发送不确定的字符串。 谢谢!
2005年07月13日 星期三 16:47
进程通讯的方法很多,这基本上是属于操作系统的问题,如信号灯,共享内存,管道,socket什么的。 在 05-7-13,Jason Liu<telecomliu at gmail.com> 写道: > hi: > 两个python进程间如何实现通信? > 我试过subprocess.Popen,但我实在没法理解Popen.communicate的用法。-__-b > > 现在我只需要实现由第一个进程A生成进程B(都是python程序),并由A向B发送不确定的字符串。 > > 谢谢! > > _______________________________________________ > 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
2005年07月13日 星期三 17:08
Alex Dong: 和其它的几个web framework比起来是要慢一些,不过没有>5sec这么慢,大概是2~3sec吧。如果只是打开一般的页面,那和其它的没什么区别。我的配置是256M memory/2.4G CPU。 ======= 2005-07-13 16:56:08 Alex Dong wrote: ======= >我试了一下,数据库用内置的Gadfly,在1G Memory, 1.6G >CPU上load一个kwiki或者附带的eCommerce的例子,速度比较慢(>5sec)。不知道在你们机器上是否也是这样。 = = = = = = = = = = = = = = = = = = = = Best regards, Bruce Who 2005-07-13
2005年07月13日 星期三 17:12
subprocess.Popen应该是提供了管道方式,但我不知道怎么用。 在 05-7-13,limodou<limodou at gmail.com> 写道: > 进程通讯的方法很多,这基本上是属于操作系统的问题,如信号灯,共享内存,管道,socket什么的。 > > 在 05-7-13,Jason Liu<telecomliu at gmail.com> 写道: > > hi: > > 两个python进程间如何实现通信? > > 我试过subprocess.Popen,但我实在没法理解Popen.communicate的用法。-__-b > > > > 现在我只需要实现由第一个进程A生成进程B(都是python程序),并由A向B发送不确定的字符串。 > > > > 谢谢! > > > > _______________________________________________ > > 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 > > _______________________________________________ > python-chinese list > python-chinese at lists.python.cn > http://python.cn/mailman/listinfo/python-chinese > > >
2005年07月13日 星期三 17:30
它返回一个文件对象呀,读就行了。 在 05-7-13,Jason Liu<telecomliu at gmail.com> 写道: > subprocess.Popen应该是提供了管道方式,但我不知道怎么用。 > > 在 05-7-13,limodou<limodou at gmail.com> 写道: > > 进程通讯的方法很多,这基本上是属于操作系统的问题,如信号灯,共享内存,管道,socket什么的。 > > > > 在 05-7-13,Jason Liu<telecomliu at gmail.com> 写道: > > > hi: > > > 两个python进程间如何实现通信? > > > 我试过subprocess.Popen,但我实在没法理解Popen.communicate的用法。-__-b > > > > > > 现在我只需要实现由第一个进程A生成进程B(都是python程序),并由A向B发送不确定的字符串。 > > > > > > 谢谢! > > > > > > _______________________________________________ > > > 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 > > > > _______________________________________________ > > 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
2005年07月14日 星期四 00:13
您是指Popen还是Popen.communicate? Popen包含stdin, stdout, stderr属性,我试图向Popen.stdin写入数据但传输不过去。用Popen.communicate方法也不成功。 Sample Code如下: #程序A #产生子进程B(receiver.py),并向其发送字符串 import subprocess, time subproc = subprocess.Popen(['receiver.py'], stdin=subprocess.PIPE, shell=True) #运行子进程B,第二个参数可能不正确。 time.sleep(0.5) print 'start' #下面两种方法都不行 subproc.stdin.write('data\n') subproc.communicate('data\n') print 'end' #程序B receiver.py #从stdin读字符串并打印之。 import sys print 'receive...' s = sys.stdin.readline() print 'get:', len(s), s
2005年07月14日 星期四 10:00
具体的操作要看文档。popen应该是返回一个输出的文件对象,如果想输入也重定向需要使用popen2,如果连错误也重定向需要使用popen3。 不过使用subprocess模块可能更方便一些,还是看一看例子吧,我也没用过。 在 05-7-14,Jason Liu<telecomliu at gmail.com> 写道: > 您是指Popen还是Popen.communicate? > Popen包含stdin, stdout, > stderr属性,我试图向Popen.stdin写入数据但传输不过去。用Popen.communicate方法也不成功。 > > Sample Code如下: > #程序A > #产生子进程B(receiver.py),并向其发送字符串 > import subprocess, time > subproc = subprocess.Popen(['receiver.py'], stdin=subprocess.PIPE, shell=True) > #运行子进程B,第二个参数可能不正确。 > time.sleep(0.5) > print 'start' > #下面两种方法都不行 > subproc.stdin.write('data\n') > subproc.communicate('data\n') > print 'end' > > #程序B receiver.py > #从stdin读字符串并打印之。 > import sys > print 'receive...' > s = sys.stdin.readline() > print 'get:', len(s), s > -- I like python! My Donews Blog: http://www.donews.net/limodou New Google Maillist: http://groups-beta.google.com/group/python-cn
2005年07月14日 星期四 10:12
共享内存,管道我用过.. 如果是LINUX建议用 管道 Neo Chan (netkiller) Best Regards, 73! de BG7NYT Personal Amateur Radiostations of P.R.China CQ24 ITU44 ShenZhen,China Amateur Radio Callsign: BG7NYT TRX: YAEUS FT-60R Dual Band(144-430) WATTS: 0.5W, 2.0W, 5.0W MODE: AM, FM -----Original Message----- From: python-chinese-bounces at lists.python.cn [mailto:python-chinese-bounces at lists.python.cn] On Behalf Of limodou Sent: Wednesday, July 13, 2005 4:47 PM To: python-chinese at lists.python.cn Subject: Re: [python-chinese] python进程间如何通信 进程通讯的方法很多,这基本上是属于操作系统的问题,如信号灯,共享内存,管道, socket什么的。 在 05-7-13,Jason Liu<telecomliu at gmail.com> 写道: > hi: > 两个python进程间如何实现通信? > 我试过subprocess.Popen,但我实在没法理解Popen.communicate的用法。-__-b > > 现在我只需要实现由第一个进程A生成进程B(都是python程序),并由A向B发送不确 定的字符串。 > > 谢谢! > > _______________________________________________ > 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 -------------- next part -------------- A non-text attachment was scrubbed... Name: Neo Chan.vcf Type: text/x-vcard Size: 1081 bytes Desc: not available Url : http://lists.exoweb.net/pipermail/python-chinese/attachments/20050714/870cf371/NeoChan.vcf
2005年07月14日 星期四 10:15
管道方式 1,你要先建一个管道文件 mkfifo 吧..忘了..可能是这个命令. 然后 popen 打开这个字符设备文件..就可以了. 如果你测试.可以. cat your_fifo 在另一个控制台下 echo hkasfaksdjfa;sdkjfl > your_fifo Neo Chan (netkiller) Best Regards, 73! de BG7NYT Personal Amateur Radiostations of P.R.China CQ24 ITU44 ShenZhen,China Amateur Radio Callsign: BG7NYT TRX: YAEUS FT-60R Dual Band(144-430) WATTS: 0.5W, 2.0W, 5.0W MODE: AM, FM -----Original Message----- From: python-chinese-bounces at lists.python.cn [mailto:python-chinese-bounces at lists.python.cn] On Behalf Of Jason Liu Sent: Wednesday, July 13, 2005 5:13 PM To: limodou; python-chinese at lists.python.cn Subject: Re: [python-chinese] python进程间如何通信 subprocess.Popen应该是提供了管道方式,但我不知道怎么用。 在 05-7-13,limodou<limodou at gmail.com> 写道: > 进程通讯的方法很多,这基本上是属于操作系统的问题,如信号灯,共享内存,管 道,socket什么的。 > > 在 05-7-13,Jason Liu<telecomliu at gmail.com> 写道: > > hi: > > 两个python进程间如何实现通信? > > 我试过subprocess.Popen,但我实在没法理解Popen.communicate的用法。-__-b > > > > 现在我只需要实现由第一个进程A生成进程B(都是python程序),并由A向B发送不 确定的字符串。 > > > > 谢谢! > > > > _______________________________________________ > > 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 > > _______________________________________________ > python-chinese list > python-chinese at lists.python.cn > http://python.cn/mailman/listinfo/python-chinese > > > -------------- next part -------------- A non-text attachment was scrubbed... Name: Neo Chan.vcf Type: text/x-vcard Size: 1081 bytes Desc: not available Url : http://lists.exoweb.net/pipermail/python-chinese/attachments/20050714/35712ee0/NeoChan.vcf
2005年07月14日 星期四 10:56
Jason Liu wrote: > 您是指Popen还是Popen.communicate? > Popen包含stdin, stdout, > stderr属性,我试图向Popen.stdin写入数据但传输不过去。用Popen.communicate方法也不成功。 > > Sample Code如下: > #程序A > #产生子进程B(receiver.py),并向其发送字符串 > import subprocess, time > subproc = subprocess.Popen(['receiver.py'], stdin=subprocess.PIPE, shell=True) > #运行子进程B,第二个参数可能不正确。 > time.sleep(0.5) > print 'start' > #下面两种方法都不行 > subproc.stdin.write('data\n') > subproc.communicate('data\n') > print 'end' > > #程序B receiver.py > #从stdin读字符串并打印之。 > import sys > print 'receive...' > s = sys.stdin.readline() > print 'get:', len(s), s 我用你的程序用stdin.write和communicate两种方法都成功了,输出结果如下: receive... start end get: 5 data 你注意一下receiver.py是否可执行,以及它是否在PATH路径中。在linux下你需要 在receiver.py文件头加入 #!/usr/bin/python 以及执行chmod +x receiver.py。 如果receiver.py不在PATH中,仅仅是在当前路径中,则需要把程序A的调用改成 subproc = subprocess.Popen(['./receiver.py'], stdin=subprocess.PIPE, shell=True) -- Qiangning Hong I'm usually annoyed by IDEs because, for instance, they don't use VIM as an editor. Since I'm hooked to that, all IDEs I've used so far have failed to impress me. -- Sybren Stuvel @ c.l.python Get Firefox! <http://www.spreadfirefox.com/?q=affiliates&id=67907&t=1>
2005年07月14日 星期四 13:33
在windows下,B中的 sys.stdin.readline() 如果没有输入就返回了, 也就是说,程序B不等有输入就退出了。 其结果就是: receive... get: 0 start end 哪位高人在windows下试试看。谢谢! 在 05-7-14,Qiangning Hong<hongqn at gmail.com> 写道: > Jason Liu wrote: > > 您是指Popen还是Popen.communicate? > > Popen包含stdin, stdout, > > stderr属性,我试图向Popen.stdin写入数据但传输不过去。用Popen.communicate方法也不成功。 > > > > Sample Code如下: > > #程序A > > #产生子进程B(receiver.py),并向其发送字符串 > > import subprocess, time > > subproc = subprocess.Popen(['receiver.py'], stdin=subprocess.PIPE, shell=True) > > #运行子进程B,第二个参数可能不正确。 > > time.sleep(0.5) > > print 'start' > > #下面两种方法都不行 > > subproc.stdin.write('data\n') > > subproc.communicate('data\n') > > print 'end' > > > > #程序B receiver.py > > #从stdin读字符串并打印之。 > > import sys > > print 'receive...' > > s = sys.stdin.readline() > > print 'get:', len(s), s > > 我用你的程序用stdin.write和communicate两种方法都成功了,输出结果如下: > receive... > start > end > get: 5 data > > 你注意一下receiver.py是否可执行,以及它是否在PATH路径中。在linux下你需要 > 在receiver.py文件头加入 #!/usr/bin/python 以及执行chmod +x receiver.py。 > 如果receiver.py不在PATH中,仅仅是在当前路径中,则需要把程序A的调用改成 > > subproc = subprocess.Popen(['./receiver.py'], stdin=subprocess.PIPE, > shell=True) > > -- > Qiangning Hong > > I'm usually annoyed by IDEs because, for instance, they don't use VIM > as an editor. Since I'm hooked to that, all IDEs I've used so far have > failed to impress me. > -- Sybren Stuvel @ c.l.python > > Get Firefox! > <http://www.spreadfirefox.com/?q=affiliates&id=67907&t=1> > _______________________________________________ > python-chinese list > python-chinese at lists.python.cn > http://python.cn/mailman/listinfo/python-chinese >
2005年07月14日 星期四 14:10
windows 不支持 popen 你可以看看 APUE《Advanced Programming in the UNIX Environment》这本书 详细的讲解了进程间通信等问题 在05-7-14,Jason Liu <telecomliu at gmail.com> 写道: > > 在windows下,B中的 > > sys.stdin.readline() > > 如果没有输入就返回了, > 也就是说,程序B不等有输入就退出了。 > 其结果就是: > receive... > get: 0 > start > end > > 哪位高人在windows下试试看。谢谢! > > 在 05-7-14,Qiangning Hong<hongqn at gmail.com> 写道: > > Jason Liu wrote: > > > 您是指Popen还是Popen.communicate? > > > Popen包含stdin, stdout, > > > stderr属性,我试图向Popen.stdin写入数据但传输不过去。用Popen.communicate方法也不成功。 > > > > > > Sample Code如下: > > > #程序A > > > #产生子进程B(receiver.py),并向其发送字符串 > > > import subprocess, time > > > subproc = subprocess.Popen(['receiver.py'], stdin=subprocess.PIPE, > shell=True) > > > #运行子进程B,第二个参数可能不正确。 > > > time.sleep(0.5) > > > print 'start' > > > #下面两种方法都不行 > > > subproc.stdin.write('data\n') > > > subproc.communicate('data\n') > > > print 'end' > > > > > > #程序B receiver.py > > > #从stdin读字符串并打印之。 > > > import sys > > > print 'receive...' > > > s = sys.stdin.readline() > > > print 'get:', len(s), s > > > > 我用你的程序用stdin.write和communicate两种方法都成功了,输出结果如下: > > receive... > > start > > end > > get: 5 data > > > > 你注意一下receiver.py是否可执行,以及它是否在PATH路径中。在linux下你需要 > > 在receiver.py文件头加入 #!/usr/bin/python 以及执行chmod +x receiver.py。 > > 如果receiver.py不在PATH中,仅仅是在当前路径中,则需要把程序A的调用改成 > > > > subproc = subprocess.Popen(['./receiver.py'], stdin=subprocess.PIPE, > > shell=True) > > > > -- > > Qiangning Hong > > > > I'm usually annoyed by IDEs because, for instance, they don't use VIM > > as an editor. Since I'm hooked to that, all IDEs I've used so far have > > failed to impress me. > > -- Sybren Stuvel @ c.l.python > > > > Get Firefox! > > <http://www.spreadfirefox.com/?q=affiliates&id=67907&t=1> > > _______________________________________________ > > 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'm the one, powered by nEO -------------- next part -------------- An HTML attachment was scrubbed... URL: http://lists.exoweb.net/pipermail/python-chinese/attachments/20050714/7cd600c6/attachment-0001.html
2005年07月14日 星期四 14:38
windows下还是用socket吧 或者mmap但要搞好同步 idle就是用的socket进行通信的 ----------------------- Original Message ----------------------- From: nEO <gentoo.cn at gmail.com> To: Jason Liu <telecomliu at gmail.com>, python-chinese at lists.python.cn Date: Thu, 14 Jul 2005 14:10:14 +0800 Subject: Re: [python-chinese] python进程间如何通信 ---------------------------------------------------------------- > windows 不支持 popen > 你可以看看 APUE《Advanced Programming in the UNIX Environment》这本书 > 详细的讲解了进程间通信等问题 > > 在05-7-14,Jason Liu <telecomliu at gmail.com> 写道: > > > > 在windows下,B中的 > > > > sys.stdin.readline() > > > > 如果没有输入就返回了, > > 也就是说,程序B不等有输入就退出了。 > > 其结果就是: > > receive... > > get: 0 > > start > > end > > > > 哪位高人在windows下试试看。谢谢! > > > > 在 05-7-14,Qiangning Hong<hongqn at gmail.com> 写道: > > > Jason Liu wrote: > > > > 您是指Popen还是Popen.communicate? > > > > Popen包含stdin, stdout, > > > > stderr属性,我试图向Popen.stdin写入数据但传输不过去。用Popen.communicate方法也不成功。 > > > > > > > > Sample Code如下: > > > > #程序A > > > > #产生子进程B(receiver.py),并向其发送字符串 > > > > import subprocess, time > > > > subproc = subprocess.Popen(['receiver.py'], stdin=subprocess.PIPE, > > shell=True) > > > > #运行子进程B,第二个参数可能不正确。 > > > > time.sleep(0.5) > > > > print 'start' > > > > #下面两种方法都不行 > > > > subproc.stdin.write('data\n') > > > > subproc.communicate('data\n') > > > > print 'end' > > > > > > > > #程序B receiver.py > > > > #从stdin读字符串并打印之。 > > > > import sys > > > > print 'receive...' > > > > s = sys.stdin.readline() > > > > print 'get:', len(s), s > > > > > > 我用你的程序用stdin.write和communicate两种方法都成功了,输出结果如下: > > > receive... > > > start > > > end > > > get: 5 data > > > > > > 你注意一下receiver.py是否可执行,以及它是否在PATH路径中。在linux下你需要 > > > 在receiver.py文件头加入 #!/usr/bin/python 以及执行chmod +x receiver.py。 > > > 如果receiver.py不在PATH中,仅仅是在当前路径中,则需要把程序A的调用改成 > > > > > > subproc = subprocess.Popen(['./receiver.py'], stdin=subprocess.PIPE, > > > shell=True) > > > > > > -- > > > Qiangning Hong > > > > > > I'm usually annoyed by IDEs because, for instance, they don't use VIM > > > as an editor. Since I'm hooked to that, all IDEs I've used so far have > > > failed to impress me. > > > -- Sybren Stuvel @ c.l.python > > > > > > Get Firefox! > > > <http://www.spreadfirefox.com/?q=affiliates&id=67907&t=1> > > > _______________________________________________ > > > 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'm the one, powered by nEO --------------------- Original Message Ends --------------------
2005年07月14日 星期四 14:52
在windows下试了一下,改成这样就可以 subproc = subprocess.Popen(['python', 'receiver.py'], stdin=subprocess.PIPE, shell=True) On 7/14/05, Jason Liu <telecomliu at gmail.com> wrote: > 在windows下,B中的 > > sys.stdin.readline() > > 如果没有输入就返回了, > 也就是说,程序B不等有输入就退出了。 > 其结果就是: > receive... > get: 0 > start > end > > 哪位高人在windows下试试看。谢谢! > > 在 05-7-14,Qiangning Hong<hongqn at gmail.com> 写道: > > Jason Liu wrote: > > > 您是指Popen还是Popen.communicate? > > > Popen包含stdin, stdout, > > > stderr属性,我试图向Popen.stdin写入数据但传输不过去。用Popen.communicate方法也不成功。 > > > > > > Sample Code如下: > > > #程序A > > > #产生子进程B(receiver.py),并向其发送字符串 > > > import subprocess, time > > > subproc = subprocess.Popen(['receiver.py'], stdin=subprocess.PIPE, shell=True) > > > #运行子进程B,第二个参数可能不正确。 > > > time.sleep(0.5) > > > print 'start' > > > #下面两种方法都不行 > > > subproc.stdin.write('data\n') > > > subproc.communicate('data\n') > > > print 'end' > > > > > > #程序B receiver.py > > > #从stdin读字符串并打印之。 > > > import sys > > > print 'receive...' > > > s = sys.stdin.readline() > > > print 'get:', len(s), s > > > > 我用你的程序用stdin.write和communicate两种方法都成功了,输出结果如下: > > receive... > > start > > end > > get: 5 data > > > > 你注意一下receiver.py是否可执行,以及它是否在PATH路径中。在linux下你需要 > > 在receiver.py文件头加入 #!/usr/bin/python 以及执行chmod +x receiver.py。 > > 如果receiver.py不在PATH中,仅仅是在当前路径中,则需要把程序A的调用改成 > > > > subproc = subprocess.Popen(['./receiver.py'], stdin=subprocess.PIPE, > > shell=True) > > > > -- > > Qiangning Hong > > > > I'm usually annoyed by IDEs because, for instance, they don't use VIM > > as an editor. Since I'm hooked to that, all IDEs I've used so far have > > failed to impress me. > > -- Sybren Stuvel @ c.l.python > > > > Get Firefox! > > <http://www.spreadfirefox.com/?q=affiliates&id=67907&t=1> > > _______________________________________________ > > 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 > > > -- Qiangning Hong I'm usually annoyed by IDEs because, for instance, they don't use VIM as an editor. Since I'm hooked to that, all IDEs I've used so far have failed to impress me. -- Sybren Stuvel @ c.l.python Get Firefox! <http://www.spreadfirefox.com/?q=affiliates&id=67907&t=1>
2005年07月14日 星期四 18:55
对,是我不求甚解了。 谢谢大家,尤其是Qiangning Hong 兄! 在 05-7-14,Qiangning Hong<hongqn at gmail.com> 写道: > 在windows下试了一下,改成这样就可以 > > subproc = subprocess.Popen(['python', 'receiver.py'], > stdin=subprocess.PIPE, shell=True)
Zeuux © 2025
京ICP备05028076号