Предполагается: при использовании python itertools.tee()
все повторяющиеся итераторы ссылаются на исходный итератор, а оригинал кэшируется для повышения производительности.Python itertools tee, клоны и кеширование
Мое основное беспокойство в следующем запросе касается МОЙ ИДЕИ Предполагаемое/правильное поведение кэширования.
Редактировать: моя идея правильное кэширование было основано на ошибочных функциональных предположениях. В конечном итоге понадобится небольшая обертка вокруг тройника (что, вероятно, будет иметь последствия для кэширования).
Вопрос:
Допустим, я создаю 3 итераторов клонов с использованием тройника: a, b, c = itertools.tee(myiter,3)
. Также предположим, что на этом этапе я удаляю все ссылки на оригинал, myiter
(это означает, что для моего кода нет ссылки на исходный текст в будущем).
В какой-то более поздний момент в коде, если я решил, что хочу еще один клон myiter
, могу ли я просто переименовать() один из моих дубликатов? (При правильном кэшировании обратно первоначально кэшируются myiter
)
Другими словами, в какой-то позже, я хочу я вместо этого использовал: a, b, c, d = itertools.tee(myiter,4)
. Но, так как я отбросили все ссылки на оригинальный myiter
, лучшее, что я могу собрать бы: copytee = itertools.tee(a, 1) #where 'a' is from a previous tee()
тройник() знаю, что я хочу ли здесь? (Что я действительно хочу, чтобы создать клон на основе оригинальной myiter
, НЕ промежуточный клон a
(который может быть частично потребляются))
Пробовали ли вы делать это? Если это не сработало, сообщите об этом в сообщении об ошибке. – thefourtheye
Мой итератор работает нормально, но я не могу подтвердить, переносит ли кеширование к второму клону. Я планирую использовать это на огромном итераторе и хочу убедиться, что я делаю это правильно. – user2097818