Use collection.deque() instead of a list for a FIFO queue.

This commit is contained in:
Raymond Hettinger 2004-02-07 03:19:10 +00:00
parent c058fd14a9
commit ac093c6af0
1 changed files with 10 additions and 5 deletions

View File

@ -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)