【问题标题】:How to kill the process after particular timeout in python?如何在python中特定超时后终止进程?
【发布时间】:2020-08-13 06:59:54
【问题描述】:
我有一个带有循环的 python 函数,它可能会陷入无限循环。
如果超过时间限制,比如 10 秒,我想终止函数并打印错误。
例如。这是包含无限循环的函数
def myfunc(data):
while True:
data[0]+=10
return data
data=[57,6,879,79,79,]
从这里调用
打印(myfunc(数据))
我希望它完全终止进程并打印消息。我在 Windows 上工作。
任何参考资料或资源都会有所帮助。
谢谢
【问题讨论】:
标签:
python
python-3.x
timeout
kill-process
taskkill
【解决方案1】:
也许你可以试试func-timeout Python 包。
您可以使用以下命令安装它:
pip install func-timeout
【解决方案2】:
此代码将解决您的问题“如果超过时间限制,例如 10 秒,我想终止函数并打印错误。”
from time import process_time as timer
def whatever(function):
start = timer()
infinite loop here:
end = timer()
(your code here)
if end >= 10:
print(whatever)
return
细分:有几个选项可以使用时间模块执行此操作
在程序开始时导入方法
在(无限循环)开始时 start = timer() 将调用 process_time 并将值保存为 start。
end = timer() 将继续调用 process_time 存储新值
将您想要的 w/e 代码放入循环中
if end >= 10: 将继续检查每次循环迭代的计数
打印(随便)
return 将在检查下一个循环时,如果 time 运行 10 秒,则通过转义自动终止函数。
这并没有说“如何停止 process_time”一旦它被称为 idk,如果它继续在后台运行并且你必须在你的 on 上停止它。但这应该回答你的问题。你可以用我给你的东西进一步调查。
注意: 这并不是为了生成“精确”计时,因为需要找到更复杂的方法