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

2024-04-29 10:59:35 发布

您现在位置:Python中文网/ 问答频道 /正文

给定这段代码,我如何确保总是可以在不等待的情况下调用get_model(),除非reload_lock处于活动状态

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

import threading

reload_lock = threading.Lock()


def get_model(name):
    # Normally this can be called, unless reload_models() is active
    # e.g. "if reload_lock.locked() -> wait until lock is released.
    ...


def reload_models():
    try:
        reload_lock.acquire()
        ...  # reload models
    finally:
        reload_lock.release()

Tags: 方法代码模型importlock应用程序getmodel