如何使用python上下文管理器“借用”对象

时间:2014-02-07 08:08:48

标签: python contextmanager

我想创建一个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()

0 个答案:

没有答案