问题可能是由于缓冲stdout
。您需要手动刷新它才能显示消息。在Python 3.3+中,该print
函数具有一个flush
参数:
from contextlib import contextmanager
import time
@contextmanager
def msg(m):
print(m + "... ", end='', flush=True)
t_start = time.time()
yield
t_duration_ms = 1000 * (time.time() - t_start)
print("done. [{:.0f} ms]".format(t_duration_ms))
在3.3之前,您必须使用以下flush
方法stdout
:
print(m + "... ", end='')
sys.stdout.flush()