Что плохого в этом способе показать прогресс функции? - PullRequest
0 голосов
/ 02 мая 2011

Вот моя функция

def f(task_list):
    results = []
    for task_id in task_list:
        results.append(work(task_id))
        print len(results) # show the progress
    return results

Я использую execfile () в ipython для запуска этой функции, но похоже, что прогресс отображается до тех пор, пока вся функция не завершится

======================= Я попробовал еще раз, теперь все в порядке ...

Ответы [ 2 ]

0 голосов
/ 06 августа 2011

В интерпретаторе python можно отключить буферизацию вывода с помощью опции -u (хотя в ipython эта опция имеет другое значение).

Просто назовите ваш скрипт как

python -u script.py

Вы можете разместить опцию в самом script.py:

#!/usr/bin/python -u
# -*- coding: UTF-8 -*-

import os
...

Надеюсь, это сработает: -)

0 голосов
/ 02 мая 2011

попытаться принудительно сбросить стандартный вывод:

import sys
def f(task_list):
    results = []
    for task_id in task_list:
        results.append(work(task_id))
        print len(results) # show the progress
        sys.stdout.flush()  # this will force the system to display what is in the stdout queue
    return results
...