Как увидеть выход печати из генератора до окончания цикла?

Я пытаюсь распечатать отладочную информацию внутри генератора, работающего с большим списком данных. Но я вижу результат только тогда, когда генератор заканчивается.

Я использую python 3, и мой код выглядит следующим образом:

def generator(): while 1: print ('.', end='') time.sleep(1) yield 1 for a in generator(): print ('|', end='') 

Результат:

 ^C.|.|.|.|.| 

Эквивалентный код PHP7 работает так, как ожидалось:

 function generator() { while (1) { echo '.'; sleep(1); yield 1; } } foreach (generator() as $item) { echo '|'; } 

Результат:

 .|.|.|.|.|^C 

Как печатать отладочную информацию в реальном времени для каждой итерации цикла генератора?

  • Как получить Исключительную информацию в Python3
  • python concurrent.futures.ProcessPoolExecutor: Производительность .submit () vs .map ()
  • Пересечение и разность двух прямоугольников
  • Как я могу получить поведение сортировки типа 2.x в Python 3.x?
  • Как записать список в Python 3?
  • Цепочка функций в Python
  • Что делает python sys.intern, и когда его следует использовать?
  • python3 - поведение супер () при многоуровневом
  • One Solution collect form web for “Как увидеть выход печати из генератора до окончания цикла?”

    TL; DR:

    Я считаю, что у вас есть аналогичная проблема с этим вопросом: заявления печати не работают при вызове serve_forever ()? (хотя по названию не видно …)

    Попробуйте очистить отпечатки:

     print ('.', end='', flush=True) print ('|', end='', flush=True) 

    промывать

    Метод flush () очищает внутренний буфер, как fflush stdio . Это может быть no-op для некоторых файловых объектов.

    Это заставляет функцию print() печатать все буферизированные до этой точки на уровне вашего устройства.

    Обычно это необходимо для операционной системы Windows.

    Удачи 🙂

    Interesting Posts

    Обфускация кода Python?

    Scikit-learn train_test_split с индексами

    Есть ли какой-нибудь pythonic способ объединить два dicts (добавление значений для ключей, которые появляются в обоих)?

    Получите абсолютное значение суммы на листе Excel, используя openpyxl

    Средняя трендовая кривая для точек данных в Python

    Правильно ли это запустить сценарий оболочки внутри Python?

    Команда Python popen. Подождите, пока команда не будет завершена.

    Как сделать запрос PATCH в Python?

    «\ D» в регулярном выражении означает цифру?

    Есть ли готовый jQuery-заменитель, который я могу использовать для urllib.quote и urllib.unquote в Python 2.6.5?

    Отображение массива NumPy на месте

    Избавиться от ведущих нулей для строк даты в Python?

    Как создать словарь с ключами из списка и значениями по умолчанию (нуль)?

    Поиск наименьшего поплавка в файле, а затем печать и над ним

    Почему я получаю ошибку рекурсии с помощью BeautifulSoup и IDLE?

    Python - лучший язык программирования в мире.