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

python-3.x – python lock with-statement和timeout,第1张

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

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

解决方法 您可以使用上下文管理器轻松完成此 *** 作:
import threadingfrom contextlib import contextmanager@contextmanagerdef 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所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1207589.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-04
下一篇 2022-06-04

发表评论

登录后才能评论

评论列表(0条)

保存