我有一个脚本,它可以从命令行按预期工作,但是当我在浏览器中运行时,它只在整个脚本执行完毕后才输出。我是Python的新手,我无法解决如何在需要时修改要打印的行为。实施例...
print("Show this")
time.sleep(10)
print("Then this")
time.sleep(10)
print("And then this")
在浏览器中,它会等待20秒,然后一次显示整个输出。
由于
答案 0 :(得分:0)
Python缓冲区stdout
。所以你可能需要做的是flush
它。
from sys import stdout
print("Show this")
stdout.flush()
time.sleep(10)
print("Then this")
stdout.flush()
time.sleep(10)
print("And then this")
stdout.flush()
答案 1 :(得分:0)
实际上这是正常的。
当您在计算机上运行脚本时(例如通过控制台),输出将被发送到标准输出(a.k.a.stdout),而您的shell正在stdout上直接读取。
当您从Web服务器运行脚本时,您的浏览器需要一个文件 无论哪种方式,如果您的Web服务器选择在计算数据后立即发送数据(因此您将只获得您的情况下的第一个打印),或者只要脚本未退出就选择“缓冲化”输出能够将整个结果(程序的输出)作为单个文件发送给您。
换句话说,您的网络服务器正在等待您的程序完成以向您发送程序的输出
由于你的程序有2 time.sleep(10)
,它总共等待20秒+执行时间(几乎可以忽略不计)print()
。
您的问题不依赖于python,而更像是与网络相关的问题。