python子进程的communication()方法很慢

时间:2015-02-24 19:22:06

标签: python shell python-3.x subprocess

我有以下代码,并且communicate()方法花费的时间比预期的要长(大约2秒)才能返回输出。我是python的新手并且尽我所能。谁能告诉我发生了什么?!我以为我应该在某处冲洗stdinstdout

我从这个python脚本中调用另一个程序。

import sys
import os
import subprocess

os.chdir("megam_0.92")
command="./megam -quiet -predict ../training_modelcp -nc multitron ../dummyst.txt"

result={}
result=subprocess.Popen(command,stdin=subprocess.PIPE,stdout=subprocess.PIPE,stderr=subprocess.PIPE,shell=True,universal_newlines=True,bufsize=0)
k=[]
print("1")
print(result)
print("9")
# sys.stdin.flush()
out=result.communicate()[0]
# result.stdout.flush()
# sys.stdout.flush()
print("2")
print(out)
print("3")
for j in out.split("\n"):
    k.append(j.split("\t",1)[0])
print(k)
print("4")

我看到" 9"输出在几毫秒内,它需要大约2秒,然后再以毫秒为单位打印其余的

0 个答案:

没有答案