| def get(self, block=1): | |
| if block: | |
| self.esema.acquire() | |
| elif not self.esema.acquire(0): | |
| raise Empty | |
| self.mutex.acquire() | |
| was_full = self._full() | |
| item = self._get() | |
| if was_full: | |
| self.fsema.release() | |
| if not self._empty(): | |
| self.esema.release() | |
| self.mutex.release() | |
| return item | |