`

带超时的涵数装饰器py版

阅读更多
import time
import signal


def fun_timeout(time_out):
    def wrapper(fun):
        def func(*args, **kwargs):
            def handler(signum, frame):
                raise AssertionError
try:
                signal.signal(signal.SIGALRM, handler)
                signal.alarm(time_out)
                return fun(*args, **kwargs)
            except AssertionError:
                print('timeout')
                return 'timeout'
return func
    return wrapper


@fun_timeout(5)
def t1():
    time.sleep(3)
    print('t1')
    return 't1'

0
0
分享到:
评论

相关推荐

    Python库 | pytest_timeout-2.0.0-py3-none-any.whl

    2. **单独设置每个测试的超时**:在测试函数上使用`@pytest.mark.timeout`装饰器,可以为每个测试指定个性化的超时时间。 3. **超时策略**:当超时时,插件可以选择中止测试(`interrupt`),或者简单地记录失败并...

    Python库 | ubelt-0.9.3-py2-none-any.whl

    - `func_timer`:装饰器,用于测量函数执行时间。 5. **模块导入**: - `import_module_from_path`:根据文件路径直接导入模块,这对于测试和调试非常有用。 6. **网络操作**: - `url_download` 和 `url_open`...

    Python库 | python_hypothesis-0.4.0-py2-none-any.whl

    在`python_hypothesis`中,主要使用`@given`装饰器来标记测试函数,这个装饰器告诉库使用特定的策略生成输入数据。例如: ```python from hypothesis import given from hypothesis.strategies import integers @...

    celery异步代码实测

    `@app.task` 装饰器将普通函数转化为 Celery 任务。 在 Django 视图中,我们可以这样调用这个异步任务: ```python from .tasks import add def async_view(request): task_result = add.apply_async(args=[2, 3...

    qc-experiment

    "点安装超时装饰器"可能是自定义的一个装饰器,用于监控运行时间较长的函数,如果超过预设的超时时限,它会强制中断这个函数,防止程序卡死或无响应。运行命令`python run_benchmarks.py -h`表明这是一个用于运行...

    Python-pythonrequests源码阅读学习更pythonic的python代码写法

    同时,`models.py`中的`BaseRequest`类使用了类装饰器`@total_ordering`,实现了自定义对象的比较逻辑。 3. **异常处理** `requests`库使用了自定义异常类,如`RequestException`、`ConnectionError`等,这些异常...

    zookeeper python接口实例详解

    `watchmethod` 装饰器则用于将方法转换为 Zookeeper 观察器,当指定的节点发生变化时,该方法会被调用。 **Zookeeper 基本操作** 1. **连接 Zookeeper**:使用 `zookeeper.init` 方法连接 Zookeeper 服务器。 2. **...

    django-redis-chs-readthedocs-io-zh_CN-latest.zip

    - **启用缓存**:在视图函数中使用`@cache_page`装饰器,或在模板中使用`{% cache %}`标签来缓存页面内容。 - **手动操作缓存**:可以使用Django的`cache`模dule提供的`get`、`set`、`delete`等方法进行缓存操作。 ...

    python如何使用Redis构建分布式锁

    接下来,我们将创建一个简单的分布式锁管理器,利用Python的`contextmanager`装饰器,实现类似`with...as...`的语法,以确保在代码块执行完毕后自动释放锁。 ```python from contextlib import contextmanager from...

    Python实现的redis分布式锁功能示例

    这样,只需要在需要加锁的函数上添加装饰器,就可以轻松实现线程安全: ```python @deco(RedisLock("112233")) def myfunc(): print "myfunc() called." time.sleep(20) ``` 在这个例子中,`myfunc`函数在执行前...

    使用Flask-Cache缓存实现给Flask提速的方法详解

    在视图函数中,可以使用`@cache.cached`装饰器来缓存结果。例如: ```python from .. import db, cache @main.route('/', methods=['GET', 'POST']) @cache.cached(timeout=300, key_prefix='index') def index(): ...

    celery_sample:样本芹菜代码

    你可以使用`@app.task`装饰器来创建一个任务函数,例如: ```python from celery import Celery app = Celery('celery_sample', broker='redis://localhost:6379/0') @app.task def add(x, y): return x + y...

    Django异步任务之Celery的基本使用

    使用`@task`装饰器标记函数为异步任务: ```python from celery.task import task from time import sleep @task() def helloWorld(): print('helloWorld') sleep(10) print('helloWorld') return '...

    django-background-tasks:Django的数据库支持的工作队列

    在Django应用中,你可以创建一个包含后台任务的模块,每个任务都是一个Python函数,通过装饰器 `@background` 来标记: ```python from background_task import background @background(schedule=60) def send...

    Django集成celery发送异步邮件实例

    这通常是通过定义一个装饰了@shared_task的函数来实现的。在该函数内部,使用Django的邮件发送机制发送邮件。由于使用了CeleryEmailBackend作为邮箱后端,邮件的发送会被推送到Celery的队列中,由工作进程异步地发送...

Global site tag (gtag.js) - Google Analytics