概述
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所遇到的程序开发问题。
如果您也喜欢它,动动您的小指点个赞吧