0

I want to create a Python context manager to act as a controlled sort of "library" that lends out objects, and then takes them back when the scope of the with statement exits.

In psuedo-code I was thinking something like this:

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()
chew socks
  • 1,406
  • 2
  • 17
  • 37

0 Answers0