[英]python `print` does not work in loop
我在一起有多个循环,在最内循环中有一个睡眠。 例如:
from time import sleep
for i in range(10):
print i,
for j in range(-5,5):
if j > 0:
print '.',
else:
print 'D',
sleep(1)
print ''
如果你运行代码,你可能希望在D
睡眠1秒和另一个D
之后得到i
值,然后再次睡觉直到结束。
但结果是差异,它等待10秒并打印整个0 DDDDDD . . . .
0 DDDDDD . . . .
并等待再次打印下一行。
我发现打印结束时的逗号导致了这个问题。 我该如何解决?
由于存在逗号,输出缓冲直到\\n
。
您应该在每次打印后刷新stdout
或使用sys.stdout.write
和flush buffer。
定义您的打印方法:
import sys
def my_print(text):
sys.stdout.write(str(text))
sys.stdout.flush()
并在行尾打印\\n
使用print <something>,
的问题是,只有在准备好打印结果id时才进行缓冲和打印。
你可以使用print_function
的__future__
来解决它(它也将符合Python 3):
from __future__ import print_function
from time import sleep
import sys
for i in range(10):
print(i, end='')
for j in range(-5,5):
if j > 0:
print('.', end='')
else:
print('D', end='')
sys.stdout.flush()
sleep(1)
print('')
我建议在导入后用下面的coe覆盖打印
import sys
def print_msg(*args,end='\n'):
for item in args:
sys.stdout.write(str(item)+' ')
sys.stdout.write(end)
sys.stdout.flush()
print = print_msg
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.