【问题标题】:How to time out python function after X milliseconds?X毫秒后如何使python函数超时?
【发布时间】:2017-12-21 08:43:54
【问题描述】:

我在 python 中调用函数A(i)。如果它执行超过 X 毫秒,我希望它被终止。我已经研究了一些超时方法,包括signal.alarm(),但它们都以整秒为单位花费时间。我想做类似的事情:

signal.alarm(0.26) //time out after 0.26 seconds

我该怎么做?

【问题讨论】:

标签: python time timeout timeoutexception socket-timeout-exception


【解决方案1】:

除了solution I linked as a possible duplicate,如果您的系统支持,您还可以使用ctypes 来使用ualarm

例如,在 macOS 上:

import ctypes

libc = ctypes.CDLL("libc.dylib")

libc.ualarm(10000, 0) # 10,000 microseconds

【讨论】:

    【解决方案2】:

    singal.settimer 需要 unix。 否则你可以使用time.time()

    import time
    
    start = time.time()
    now = time.time()
    while now - start < 0.26: # 0.26 seconds
       now = time.time()
    print (now-start)
    

    您可以使用 decorator,将您的函数置于 while 循环下,或在计时器结束时引发异常(可能还有其他)。

    您可能需要thread 计时器。

    【讨论】:

      猜你喜欢
      • 2017-07-27
      • 1970-01-01
      • 2023-03-23
      • 1970-01-01
      • 2022-12-07
      • 1970-01-01
      • 2011-06-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多