Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/298.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
另一个Python线程如何等待锁被释放?_Python_Locking_Python Multithreading - Fatal编程技术网

另一个Python线程如何等待锁被释放?

另一个Python线程如何等待锁被释放?,python,locking,python-multithreading,Python,Locking,Python Multithreading,有了这些代码,我如何确保总是可以在不等待的情况下调用get\u model(),除非reload\u lock处于活动状态 最好,我不希望get_model()获得reload_lock本身,因为所有线程都可以自由调用此方法,除非应用程序正在重新加载其模型 导入线程 reload_lock=threading.lock() def get_型号(名称): #通常可以调用此函数,除非reload_models()处于活动状态 #例如,“如果重新加载锁定()->等待锁定释放。 ... def rel

有了这些代码,我如何确保总是可以在不等待的情况下调用
get\u model()
,除非
reload\u lock
处于活动状态

最好,我不希望
get_model()
获得
reload_lock
本身,因为所有线程都可以自由调用此方法,除非应用程序正在重新加载其模型

导入线程
reload_lock=threading.lock()
def get_型号(名称):
#通常可以调用此函数,除非reload_models()处于活动状态
#例如,“如果重新加载锁定()->等待锁定释放。
...
def reload_模型():
尝试:
重新加载_lock.acquire()
…#重新加载模型
最后:
重新加载锁。释放()

也许您应该这样尝试,在
get\u model()
中:

我知道这是一个
获取
,但如果您立即
释放它,它可能是一个解决方案。

并且重新加载锁。锁定()对您不起作用?这就是您检查锁是否锁定的方式。如果获得锁,它将返回True。否则返回False。
if reload_lock.locked():
    reload_lock.acquire()
    reload_lock.release()