Ошибка StopIteration при многократном вызове next() в генераторе PythonPython

Программы на Python
Ответить
Anonymous
 Ошибка StopIteration при многократном вызове next() в генераторе Python

Сообщение Anonymous »

Код: Выделить всё

import time
import numpy as np

def sensor_data_generator(n):
for _ in range(n):
reading = {
"timestamp" : time.time(),
"temperature" : np.random.uniform(20.0, 25.0),
"humidity" : np.random.uniform(60.0, 100.0),
"light" : np.random.uniform(0.0, 100.0)
}
yield reading
time.sleep(1)

sensor_stream = sensor_data_generator(5)

for _ in range(6):
print(next(sensor_stream))
Я ожидал, что это напечатает 5 показаний и обработает цикл.
но я получил результат: «Он печатает первые 5 показаний, затем выдает ошибку».
Ошибка остановки
Я попробовал это

Код: Выделить всё

gen = sensor_data_generator(5)

for reading in gen:
print(reading)
это печаталось 5 раз и прекращалось
вывод
мои вопросы:
  • Почему происходит эта StopIteration?
  • Как я могу справиться с этим, чтобы цикл не завершался сбоем при вызове next() больше раз, чем длина генератора?


Подробнее здесь: https://stackoverflow.com/questions/799 ... iple-times
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»