python – 具有超时的异步子进程
发布时间:2020-12-16 21:51:12 所属栏目:Python 来源:网络整理
导读:我在Python 3中生成具有超时的异步子进程时遇到问题. 我想要实现的目标:我希望异步生成多个进程而不等待结果,但我还要确保每个生成的进程都会在给定的超时内结束. 我在这里发现了类似的问题:Using module subprocess with timeout和Asynchronous backgroun
我在Python 3中生成具有超时的异步子进程时遇到问题. 我想要实现的目标:我希望异步生成多个进程而不等待结果,但我还要确保每个生成的进程都会在给定的超时内结束. 我在这里发现了类似的问题:Using module ‘subprocess’ with timeout和Asynchronous background processes in Python?但它们并没有解决我的问题. 我的代码看起来像这样.我有Using module ‘subprocess’ with timeout中建议的Command类:
然后当我想要产生子进程时:
当我运行它时,输出似乎等待每个命令生成并结束.我明白了
所以我的问题是我做错了什么?现在我开始怀疑是否有可能产生进程并通过超时限制其执行. 为什么我需要这个? spawner脚本将在cron中运行.它将每10分钟执行一次,它必须产生大约20个子进程.我想保证每个子进程都会在脚本再次从cron运行之前结束. 最佳答案
如前所述,对process.communicate()的调用使您的代码等待子进程的完成.但是,如果你只是删除了communication()调用,线程将在产生进程后立即退出,导致你的thread.join()调用过早退出,你将过早地杀掉子进程.要在没有轮询或忙等待的情况下执行您想要的操作,您可以设置一个计时器,如果进程尚未完成,将在超时后终止进程(和运行程序线程):
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |