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

在Ubuntu10.10上使用Python3.1.2,一个子进程(a.py)通过stdin和stdout与父进程(b.py)通信。发现在写入子进程的stdin和从其stdout读取之间存在性能差异,写入操作明显较慢。问题在于为何写入子进程的stdin比从stdout读取更耗时,并询问如何提高两个进程间的通信效率。
摘要由CSDN通过智能技术生成

我有两个需要相互通信的

python程序(一个是子进程).目前我通过stdin和stdout这样做.然而,写入子进程的标准似乎很慢.

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.

为什么写入an.py的标签比从其stdout读取慢得多?

有没有可以让这两个程序更快地沟通?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值