计算代码行已运行的时间,如果超过时间限制,则终止代码行

2024-04-24 06:07:33 发布

您现在位置:Python中文网/ 问答频道 /正文

python中有没有办法检查一行代码已经运行了多长时间?此外,如果超过时间限制,则终止

问题

很难解释整个用例。我有一个图书馆,它对狗和猫的图像进行分类。我不能修改原始库,因为它会产生很多不同的错误。所以我使用的是来自该库的单个函数调用

现在,让我们假设函数调用需要不同的时间来输出不同图像的结果。我想将时间限制为15秒,即,如果任何呼叫需要15秒或更短时间,则应正常运行,但如果超过15秒,则终止线路并退出

示例

time.sleep()可以用作模拟用例的示例。我的问题的等价物是,我希望time.sleep(14)成功运行,但time.sleep(16)应该在15秒后终止,而不是完成

我所尝试的

我已经尝试从multiprocessing使用Process,但我只能在行花费足够的时间或超出限制时返回,我无法显式运行该函数。我有以下代码来检查它是否及时运行:

def run_with_limited_time(func, args, time):
  p = Process(target=func, args=args)
  p.start()
  p.join(time)

  if p.is_alive():
    p.terminate()
    return False

  return True

但不知道如何获得实际函数调用的输出


Tags: 代码图像示例return图书馆time时间args
1条回答
网友
1楼 · 发布于 2024-04-24 06:07:33

一种安全(尽管性能稍差)的方法是将库包装为可调用程序,然后使用subprocess模块调用它(可能使用timeout(1)来确保它终止)

您可以使用multiprocessing将尽可能多的内容放入当前程序中

相关问题 更多 >