У меня есть следующий код
from itertools import product
from time import sleep
def slowrange(n,t):
for i in range(n):
sleep(t)
yield i
for n,w in product(slowrange(5,0.2),"AB"):
print(n,w)
, поскольку в itertools.product do c говорится, что:
Эта функция примерно эквивалентна к следующему коду, за исключением того, что фактическая реализация не создает промежуточные результаты в памяти
я ожидал бы, что я увижу две строки с 0 A \n 0 B
, а затем через 0,2 секунды я бы увидел следующую итерацию, которая, однако, не происходит, после того, как 1s все итерации напечатаны, если я использую следующую функцию вместо itertools.product, она выполняет желаемое поведение:
def product(itertor1,iterator2):
for s in iterator1:
for f in iterator2:
yield s,f
Итак, что происходит? Это ошибка? Что-то не так в документации?