반복자 파이썬 ITER 반복적으로 소비

문제

파이썬의 반복자는 우리가 자주 사용하는 반복적 인 도구입니다,하지만 소비자되면, 소비자는 다시 StopIteration을 오류가 나타납니다.

솔루션

- 다시 초기화 한 후 클래스, 반복자를 캡슐화합니다.

코드

class RepeatDataLoader():
    def __init__(self):
        self.data_iter = self.data_loader()
        self.renew_epoch = False

    def __next__(self):
        try:
            batch = self.data_iter.__next__()
            self.renew_epoch = False
        except StopIteration:
            self.data_iter = self.data_loader()
            batch = self.data_iter.__next__()
            self.renew_epoch = True
        return batch
    
    @staticmethod
    def data_loader():
        for i in range(5):
            yield i

def checkIter(myIter):
    for _ in range(15):
        a = next(myIter)
        print (a)

if __name__ == "__main__":
    oneIter = RepeatDataLoader.data_loader()
    repeatIter = RepeatDataLoader()
    checkIter(repeatIter)

추천

출처www.cnblogs.com/Fosen/p/12609305.html