from dataloader_rs import PyDataloader, PyDataset
class Squares(PyDataset):
def __init__(self, length: int) -> None:
super().__init__() self.length = length
def __len__(self) -> int:
return self.length
def __getitem__(self, index: int) -> int:
return index * index
def main() -> None:
loader = PyDataloader(
Squares(100),
batch_size=10,
shuffle=True, seed=42, num_workers=4, prefetch_depth=4, drop_last=True, )
print(f"{len(loader)} batches per epoch")
for epoch in range(2):
first = next(iter(loader))
print(f"epoch {epoch}: first batch {first}")
in_order = PyDataloader(Squares(25), batch_size=10, num_workers=2)
print("in order:", list(in_order))
for count, _batch in enumerate(loader):
if count == 2:
break
iterator = iter(loader)
next(iterator)
print(f"stopped after 3 batches; in the next epoch, {len(iterator)} batches are left after one")
if __name__ == "__main__":
main()