我想了解,为什么 开始... 不会先打印。但什么都没有......
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上的配置问题)。在终端上,第二个在版本和第一个版本中运行良好都会导致两个版本都出现问题。
答案 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.')