Use collection.deque() instead of a list for a FIFO queue.
This commit is contained in:
parent
c058fd14a9
commit
ac093c6af0
|
@ -48,6 +48,7 @@ you - by calling your self.found_terminator() method.
|
||||||
|
|
||||||
import socket
|
import socket
|
||||||
import asyncore
|
import asyncore
|
||||||
|
from collections import deque
|
||||||
|
|
||||||
class async_chat (asyncore.dispatcher):
|
class async_chat (asyncore.dispatcher):
|
||||||
"""This is an abstract class. You must derive from this class, and add
|
"""This is an abstract class. You must derive from this class, and add
|
||||||
|
@ -250,9 +251,9 @@ class simple_producer:
|
||||||
class fifo:
|
class fifo:
|
||||||
def __init__ (self, list=None):
|
def __init__ (self, list=None):
|
||||||
if not list:
|
if not list:
|
||||||
self.list = []
|
self.list = deque()
|
||||||
else:
|
else:
|
||||||
self.list = list
|
self.list = deque(list)
|
||||||
|
|
||||||
def __len__ (self):
|
def __len__ (self):
|
||||||
return len(self.list)
|
return len(self.list)
|
||||||
|
@ -261,14 +262,18 @@ class fifo:
|
||||||
return self.list == []
|
return self.list == []
|
||||||
|
|
||||||
def first (self):
|
def first (self):
|
||||||
return self.list[0]
|
it = iter(self.list)
|
||||||
|
try:
|
||||||
|
return it.next()
|
||||||
|
except StopIteration:
|
||||||
|
raise IndexError
|
||||||
|
|
||||||
def push (self, data):
|
def push (self, data):
|
||||||
self.list.append (data)
|
self.list.append(data)
|
||||||
|
|
||||||
def pop (self):
|
def pop (self):
|
||||||
if self.list:
|
if self.list:
|
||||||
return (1, self.list.pop(0))
|
return (1, self.list.popleft())
|
||||||
else:
|
else:
|
||||||
return (0, None)
|
return (0, None)
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue