0

Добрый день, задался вопросом, а как можно возобновить итерацию с генератора, если мы завершим процесс, а потом захотим его продолжить?

Вот типа такого

# ------------- file 1 -------------
import pickle
import itertools
 
def test(sym, L):
    return (''.join(q) for q in itertools.chain.from_iterable(itertools.product(sym, repeat=i)for i in range(1, L + 1)))
 
h = test("1234567890",4)
f = open("test.pickle", "wb")
 
for i in range(1000):
    next(h)
 
print(next(h)) # 901
pickle.dump(h, f) # TypeError: can't pickle generator objects
 
# PC shutdown
 
# ------------- file 2 -------------
import pickle
import itertools
 
def test(sym, L):
    return (''.join(q) for q in itertools.chain.from_iterable(itertools.product(sym, repeat=i)for i in range(1, L + 1)))
 
h = test("1234567890",2)
 
f = open("test.pickle", "rb")
 
pickle.load(f)
print(next(h)) # 902???

Можно и в одном файле, но сути это особо не изменит. И вообще возможно ли такое сохранить на диске в виде дампа?


Добавить комментарий