File size: 383 Bytes
cdcab39
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
def get(self, block=1):
		if block:
			self.esema.acquire()
		elif not self.esema.acquire(0):
			raise Empty
		self.mutex.acquire()
		release_esema = True
		try:
			was_full = self._full()
			item = self._get()
			if was_full:
				self.fsema.release()
			release_esema = not self._empty()
		finally:
			if release_esema:
				self.esema.release()
			self.mutex.release()
		return item