Python脚本仅在执行后输出到浏览器

时间:2017-08-16 11:16:12

标签: python

我有一个脚本,它可以从命令行按预期工作,但是当我在浏览器中运行时,它只在整个脚本执行完毕后才输出。我是Python的新手,我无法解决如何在需要时修改要打印的行为。实施例...

print("Show this")
time.sleep(10)
print("Then this")
time.sleep(10)
print("And then this")

在浏览器中,它会等待20秒,然后一次显示整个输出。

由于

2 个答案:

答案 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,而更像是与网络相关的问题。