如何在X毫秒后超时python函数?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在X毫秒后超时python函数?相关的知识,希望对你有一定的参考价值。

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

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

我该怎么做呢?

答案

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

例如,在macOS上:

import ctypes

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

libc.ualarm(10000, 0) # 10,000 microseconds
另一答案

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计时器。

以上是关于如何在X毫秒后超时python函数?的主要内容,如果未能解决你的问题,请参考以下文章

Vert.x SQLConnection:“路由中出现意外异常”,“等待 30000(毫秒)回复后超时”

在 .net Rider IDE 中恢复解决方案的 nuget 包:无法下载包 `x` 对 GET `x` 的 HTTP 请求在 100000 毫秒后超时

Sleep() 方法后的代码片段没有被执行

MongooseError - 操作缓冲在 10000 毫秒后超时

cURL:操作在 0 毫秒后超时

Node.js 和 Telegraf TimeoutError: Promise 在 90000 毫秒后超时