标签: python subprocess stdout
我正在处理偶尔进入无限循环的子进程并用垃圾泛滥stdout。我通常需要捕获stdout,除了那些情况。
这个discussion提供了一种限制子进程所需时间的方法,但问题是,对于合理的超时,它可以在被杀死之前产生GB的输出。
有没有办法限制从流程中捕获的输出量?
答案 0 :(得分:1)
如果你无法发现洪水发生的时间,那么其他人也无法做到。由于您进行捕获,您当然可以自由地限制捕获,但这需要您知道何时发生循环。
如果“常规”费率低于发送垃圾邮件时观察到的费率,也许你可以使用限速?
答案 1 :(得分:1)
您可以将子流程标准输出连接到类似文件的对象,该对象在您调用Popen时限制它将传递给真正标准输出的数据量。类文件对象可以是fifo或cStringIO。