in awsio/python/lib/io/s3/s3dataset.py [0:0]
def __iter__(self):
shufbuf = []
try:
dataset_iter = iter(self.dataset)
for _ in range(self.buffer_size):
shufbuf.append(next(dataset_iter))
except StopIteration:
self.buffer_size = len(shufbuf)
try:
while True:
try:
if self.buffer_size == 0:
break
evict_idx = random.randint(0, self.buffer_size - 1)
yield shufbuf.pop(evict_idx)
item = next(dataset_iter)
shufbuf.append(item)
except StopIteration:
break
while len(shufbuf) > 0:
evict_idx = random.randint(0, len(shufbuf) - 1)
yield shufbuf.pop(evict_idx)
except GeneratorExit: # pragma: no cover
pass