处理泛滥stdout的子进程

时间:2011-06-14 17:35:18

标签: python subprocess stdout

我正在处理偶尔进入无限循环的子进程并用垃圾泛滥stdout。我通常需要捕获stdout,除了那些情况。

这个discussion提供了一种限制子进程所需时间的方法,但问题是,对于合理的超时,它可以在被杀死之前产生GB的输出。

有没有办法限制从流程中捕获的输出量?

2 个答案:

答案 0 :(得分:1)

如果你无法发现洪水发生的时间,那么其他人也无法做到。由于您进行捕获,您当然可以自由地限制捕获,但这需要您知道何时发生循环。

如果“常规”费率低于发送垃圾邮件时观察到的费率,也许你可以使用限速?

答案 1 :(得分:1)

您可以将子流程标准输出连接到类似文件的对象,该对象在您调用Popen时限制它将传递给真正标准输出的数据量。类文件对象可以是fifo或cStringIO