打印功能最近打印耗时的东西

时间:2016-04-02 11:08:02

标签: python python-2.7 sublimetext3 python-3.4

我想了解,为什么 开始... 不会先打印。但什么都没有......

Error: Could not find or load main class Xj3DTest
C:\Users\matt\AppData\Local\NetBeans\Cache\8.1\executor-snippets\run.xml:53: Java returned: 1
BUILD FAILED (total time: 0 seconds)

同样的事情发生在这个

from __future__ import print_function
# from time import sleep

def sleeping():
    # sleep(2)
    for i in range(60000000):  # or xrange(60000000)
        pass

print('start...', end='')
sleeping()
print('stop.')

我已经在python 3和2上尝试了这个。在python 2上它运行正常。但是在python 3上引起问题。

修改

sublime文本和终端上的不同输出(可能是sublime上的配置问题)。在终端上,第二个在版本和第一个版本中运行良好都会导致两个版本都出现问题。

2 个答案:

答案 0 :(得分:7)

交互式运行时,

sys.stdout(默认情况下print打印到)为line-buffered

由于print('start...', end='')使行不结束,因此输出不会自动刷新。

要强制刷新缓冲区,可以在调用flush=True时指定print

在您的情况下:print('start...', end='', flush=True)

另一种选择是使用sys.stdout.flush()手动刷新流。

进一步阅读:

答案 1 :(得分:2)

print语句在大多数情况下都是缓冲的。为了强制打印到stdout,你必须刷新缓冲区(使用sys):

from __future__ import print_function
# from time import sleep
import sys


def sleeping():
    # sleep(2)
    for i in range(60000000):  # or xrange(60000000)
        pass

print('start...', end='')
sys.stdout.flush()
sleeping()
print('stop.')