您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

python-3.x – python lock with-statement和timeout

5b51 2022/1/14 8:23:29 python 字数 1337 阅读 685 来源 www.jb51.cc/python

我正在使用这样的 Python 3序列: lock = threading.Lock() res = lock.acquire(timeout=10) if res: # do something .... lock.release() else: # do something else ... 我更喜欢使用with语句而不是显式的“获取”和“释放”,但我不知道如何获得超时

概述

lock = threading.Lock()
res = lock.acquire(timeout=10)
if res:
    # do something ....
    lock.release()
else:
    # do something else ...

我更喜欢使用with语句而不是显式的“获取”和“释放”,但我不知道如何获得超时效果.

import threading
from contextlib import contextmanager

@contextmanager
def acquire_timeout(lock,timeout):
    result = lock.acquire(timeout=timeout)
    yield result
    if result:
        lock.release()


# Usage:
lock = threading.Lock()

with acquire_timeout(lock,2) as acquired:
    if acquired:
        print('got the lock')
        # do something ....
    else:
        print('timeout: lock not available')
        # do something else ...

*注意:这在Python 2.x中不起作用,因为Lock.acquire没有超时参数

总结

以上是编程之家为你收集整理的python-3.x – python lock with-statement和timeout全部内容,希望文章能够帮你解决python-3.x – python lock with-statement和timeout所遇到的程序开发问题。


如果您也喜欢它,动动您的小指点个赞吧

除非注明,文章均由 laddyq.com 整理发布,欢迎转载。

转载请注明:
链接:http://laddyq.com
来源:laddyq.com
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。


联系我
置顶