如何限制Python中阻塞函数调用的执行时间?

Mary-Kate Olsen
发布: 2024-11-24 03:02:12
原创
931 人浏览过

How to Limit the Execution Time of a Blocking Function Call in Python?

限制函数调用的执行时间

您在代码中遇到了与套接字相关的函数调用,该函数调用偶尔会出现扩展阻塞,有时达到几个小时。这造成了不可接受的情况。为了缓解此问题,您可以在代码中寻求解决方案来限制函数的执行时间。

正如已接受的答案中所建议的,使用另一个线程可能会提供解决方案。然而,一种增强的方法是利用 with 语句,为超时函数提供语法便利:

import signal
from contextlib import contextmanager

class TimeoutException(Exception): pass

@contextmanager
def time_limit(seconds):
    def signal_handler(signum, frame):
        raise TimeoutException("Timed out!")
    signal.signal(signal.SIGALRM, signal_handler)
    signal.alarm(seconds)
    try:
        yield
    finally:
        signal.alarm(0)

try:
    with time_limit(10):
        long_function_call()
except TimeoutException as e:
    print("Timed out!")
登录后复制

这种方法允许您在块内更优雅地处理超时,如果函数超过,则引发 TimeoutException指定时限。

以上是如何限制Python中阻塞函数调用的执行时间?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板