我有一个python脚本,它将HandBrakeCli称为Linux上的子进程。在正常操作期间,HandBrakeCli几乎占用了100%的可用CPU资源。但有时它似乎饿死或者其他什么 - 似乎不是活跃的,但是很长一段时间都没有回归。这似乎是由于DVD损坏(手刹是一种DVD翻录工具) - 似乎Handbrake没有这么好处理。它将在很长一段时间(几小时)后完成,但它不会做任何事情。而在正常操作中,它将使用大量的cpu周期。
所以解决这个问题的想法是让看门狗检查是否存在HandBrakeCli进程,如果有的话,监视它是否确实使用了cpu的一部分。如果5分钟不是这种情况,它将终止该进程,以便父脚本可以继续运行。
编程这个似乎并不太难,但我觉得它可能涉及一些单调乏味。此问题似乎也不可能在此之前得到解决。有没有解决方案,可能在python中?如果有一个独立的程序或daemone在Linux上完成这项工作,我不介意它是不是python,只要它是开源的。
答案 0 :(得分:0)
也许在python中监视和控制子进程的最明显的答案必须是supervisord。它非常成熟,并且有很多功能和文档。
它是用Python编写的,有一个插件API,一个服务API和一个Web仪表板。
你的问题描述有点含糊不清,重新'饥饿'。听起来好像你的工作阻塞了某些资源,但你可能想要更准确地诊断它,然后再找到一个复杂的软件支架来支持它。
即。也许它在I / O(网络或磁盘带宽)上受阻,或者它从失败的管道中停止读取。您可能希望查看进程控制(例如 renice命令)以更好地管理它的CPU分配等。