cópia profunda de um gerador em python

Estou usando uma função geradora, digamos:

def foo():
    i=0
    while (i<10):
         i+=1
         yield i

Agora, eu gostaria da opção de copiar o gerador após qualquer número de iterações, para que a nova cópia retenha o estado interno (terá o mesmo 'i' no exemplo), mas agora será independente do original (ou seja, iterando sobre a cópia não deve alterar o original).

Eu tentei usarcopy.deepcopy mas eu recebo o erro:

 "TypeError: object.__new__(generator) is not safe, use generator.__new__()"   

Obviamente, eu poderia resolver isso usando funções regulares com contadores, por exemplo. Mas estou realmente procurando uma solução usando geradores.

questionAnswers(2)

yourAnswerToTheQuestion