【问题标题】: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 上停止它。但这应该回答你的问题。你可以用我给你的东西进一步调查。
    注意: 这并不是为了生成“精确”计时,因为需要找到更复杂的方法

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-22
      • 2014-07-24
      • 2015-09-05
      • 2019-04-23
      • 2011-06-05
      • 2014-12-19
      相关资源
      最近更新 更多