python stdin和stdout_stdin似乎比stdout(python)慢得多。为什么?

我有两个python程序(一个是子进程)需要相互通信。目前我通过stdin和stdout来完成此操作。但是,写入子进程的stdin似乎非常缓慢。

a.py,这是一个接受任意一行输入并打印时间的程序:

from time import time, sleep

from sys import stdout, stdin

while True:

stdin.readline()

stdout.write('%f\n' % time())

stdout.flush()b.py,运行a.py的程序,以及写入程序的stdin并从stdout中读取的时间:

from time import time

from subprocess import PIPE, Popen

from threading import Thread

stdin_times = []

stdout_times = []

p = Popen(['python', 'a.py'], stdin=PIPE, stdout=PIPE)

for i in range(100000):

t1 = time()

p.stdin.write(b'\n')

p.stdin.flush()

t2 = float(p.stdout.readline().strip().decode())

t3 = time()

stdin_times.append(t2 - t1)

stdout_times.append(t3 - t2)

p.kill()

print('stdin (min/ave):', min(stdin_times), sum(stdin_times) / len(stdin_times))

print('stdout (min/ave):', min(stdout_times), sum(stdout_times) / len(stdout_times))示例输出:

stdin (min/ave): 1.69277191162e-05 0.000138891274929

stdout (min/ave): 1.78813934326e-05 2.09228754044e-05我在Ubuntu 10.10上使用Python 3.1.2。

为什么写a.py的stdin比从stdout读取要慢得多?

无论如何,我可以让这两个程序更快地沟通?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值