Для поддержки чтения и записи можно использовать деку, которую вы вложили в подкласс:
from collections import deque
from Exceptions import IndexError
class DequeBuffer(deque):
def write(self, data):
self.append(data)
def read(self):
try:
return self.popleft()
except IndexError:
return ''
buf = DequeBuffer()
Если читатель работает намного быстрее, чем писатель, и таблица велика, deque
все равно будетстановится большим, но это будет меньше, чем хранение всего этого.
Кроме того, я точно не знаю return ''
, когда deque
пусто, это безопасно, а не повторять попытку, пока он не опустеет,но я предполагаю, что это так.Дайте мне знать, если это работает.
Не забывайте del buf
, когда вы уверены, что копия сделана, особенно если сценарий не просто завершается в этот момент.