0

我想创建一个 Python 上下文管理器来充当一种受控的“库”,它可以借出对象,然后在with语句范围退出时将它们取回。

在伪代码中,我在想这样的事情:

class Library:
    def __init__(self):
        self.lib = [1,2,3,4]
        self.lock = Condition(Lock())

    def __enter__(self):
        with self.lock:
            # Somehow keep track of this object-thread association
            if len(self.lib) > 0:
                return self.lib.pop() 
            else:
                self.lock.wait()
                return self.lib.pop()

    def __exit__(self):
        with self.lock:
            # Push the object that the calling thread obtained with
            # __enter__() back into the array
            self.lock.notify()
4

0 回答 0