1010 )
1111
1212from Queue import (
13- Queue ,
1413 Empty ,
1514 )
1615
@@ -171,23 +170,22 @@ def notify_all(self):
171170class ReadOnly (Exception ):
172171 """Thrown when trying to write to a read-only queue"""
173172
174- class AsyncQueue (Queue ):
173+ class AsyncQueue (deque ):
175174 """A queue using different condition objects to gain multithreading performance.
176175 Additionally it has a threadsafe writable flag, which will alert all readers
177176 that there is nothing more to get here.
178177 All default-queue code was cleaned up for performance."""
179- __slots__ = ('mutex' , 'not_empty' , 'queue' , ' _writable' )
178+ __slots__ = ('mutex' , 'not_empty' , '_writable' )
180179
181180 def __init__ (self , maxsize = 0 ):
182- self .queue = deque ()
183181 self .mutex = Lock ()
184182 self .not_empty = HSCondition (self .mutex )
185183 self ._writable = True
186184
187185 def qsize (self ):
188186 self .mutex .acquire ()
189187 try :
190- return len (self . queue )
188+ return len (self )
191189 finally :
192190 self .mutex .release ()
193191
@@ -218,7 +216,7 @@ def set_writable(self, state):
218216 def empty (self ):
219217 self .mutex .acquire ()
220218 try :
221- return not len (self . queue )
219+ return not len (self )
222220 finally :
223221 self .mutex .release ()
224222
@@ -228,21 +226,20 @@ def put(self, item, block=True, timeout=None):
228226 self .mutex .release ()
229227 raise ReadOnly
230228 # END handle read-only
231- self .queue . append (item )
229+ self .append (item )
232230 self .mutex .release ()
233231 self .not_empty .notify ()
234232
235233 def get (self , block = True , timeout = None ):
236234 self .mutex .acquire ()
237- q = self .queue
238235 try :
239236 if block :
240237 if timeout is None :
241- while not len (q ) and self ._writable :
238+ while not len (self ) and self ._writable :
242239 self .not_empty .wait ()
243240 else :
244241 endtime = _time () + timeout
245- while not len (q ) and self ._writable :
242+ while not len (self ) and self ._writable :
246243 remaining = endtime - _time ()
247244 if remaining <= 0.0 :
248245 raise Empty
@@ -252,7 +249,7 @@ def get(self, block=True, timeout=None):
252249
253250 # can throw if we woke up because we are not writable anymore
254251 try :
255- return q .popleft ()
252+ return self .popleft ()
256253 except IndexError :
257254 raise Empty
258255 # END handle unblocking reason
0 commit comments