从python调用的进程随机挂起

从python调用的进程随机挂起,python,subprocess,Python,Subprocess,我使用Python测试给定的软件。简而言之,这是一个C++程序,进行一些批处理。我需要使用许多不同的数据集和参数来启动它,这就是我用Python编写工具的原因。我基本上启动了这个过程,将错误流保存在一个文件中,解析输出流以获得一些实时反馈。(标准输出流不是很详细。) 它主要是按照我的预期工作,除了我有一段时间有被测试的C++程序挂起。这种挂起只发生在我的一些测试目标上,在windows XP上,在win 7或其他一些windows XP上从未发生过。在可能发生挂起的目标上,如果直接从命令行启动,

我使用Python测试给定的软件。简而言之,这是一个C++程序,进行一些批处理。我需要使用许多不同的数据集和参数来启动它,这就是我用Python编写工具的原因。我基本上启动了这个过程,将错误流保存在一个文件中,解析输出流以获得一些实时反馈。(标准输出流不是很详细。)

<>它主要是按照我的预期工作,除了我有一段时间有被测试的C++程序挂起。这种挂起只发生在我的一些测试目标上,在windows XP上,在win 7或其他一些windows XP上从未发生过。在可能发生挂起的目标上,如果直接从命令行启动,该软件工作良好

我怀疑IO流处理导致死锁,但我不明白原因

以下是我的代码摘录:

stderrFile = open("err.txt", 'w')
stdoutFile = open("out.txt", 'w')

p = subprocess.Popen(args, stdout = subprocess.PIPE, stderr =stderrFile, env = runEnv)
outStream = p.stdout

for line in outStream:
    line = line.rstrip()
    if line.startswith('======== '):
        print " - " + line[9:]
    stdoutFile.write(line + '\n')

returnCode = p.wait()

您是否尝试运行没有Python包装的C++应用程序,看看问题是否存在?如果没有python包装器它就不会挂起,这真的很奇怪,我可能会先打印每一行,然后逐个添加约束来调试它。尝试在for循环中使用一个简单的“打印行”。