shuofxz 发表于 2016-1-27 16:59:15

python中print函数中flush参数用法?

查看help里面写的print
print(...)
    print(value, ..., sep=' ', end='\n', file=sys.stdout, flush=False)
   
    Prints the values to a stream, or to sys.stdout by default.
    Optional keyword arguments:
    file:a file-like object (stream); defaults to the current sys.stdout.
    sep:   string inserted between values, default a space.
    end:   string appended after the last value, default a newline.
    flush: whether to forcibly flush the stream.

其中有一个参数是flush,求问这个参数是干什么用的,并且是怎么用的

hldh214 发表于 2016-1-27 17:25:06

简单说就是将缓存里面的内容立即输出到标准输出流(这里是sys.stdout, 也就是默认的显示器)

这个功能在客户端脚本几乎用不上, 大多用于服务器端

比如反向Ajax里面就要用到flush, 举个例子: 在线web聊天页面会实时显示聊天的内容, 其实后台是一直在向服务器请求数据的, 正常情况下是请求完毕之后才会输出相应内容, 但是是即时聊天, 需要一有相应就得立即返回, flush也就起作用了{:10_257:}

shuofxz 发表于 2016-1-27 17:31:59

hldh214 发表于 2016-1-27 17:25
简单说就是将缓存里面的内容立即输出到标准输出流(这里是sys.stdout, 也就是默认的显示器)

这个功能在客 ...

哦哦,大概明白了,那flush参数是false是指有相应立即返回,还是true是有相应立即返回?

hldh214 发表于 2016-1-27 17:38:20

shuofxz 发表于 2016-1-27 17:31
哦哦,大概明白了,那flush参数是false是指有相应立即返回,还是true是有相应立即返回?

True是立即返回~

冬雪雪冬 发表于 2016-1-27 18:31:08

本帖最后由 冬雪雪冬 于 2016-1-27 21:23 编辑

正如hidh214版主所说,flush为True时是立即输出。
举个例子,我们知道print也可输出到文件。
在IDLE中输入
f = open('text.txt', 'w')
print('ABC',file = f)
可以看到text.txt文件这时还是为空,只有f.close()后才将内容写进文件中。
如果改为
print('ABC', file = f, flush = True)
则不用close文件立即就能看到文件有内容了。

shuofxz 发表于 2016-1-27 20:11:04

冬雪雪冬 发表于 2016-1-27 18:31
正如hidh214版主所说,flush为True时是立即输出。
举个例子,我们知道print也可输出到文件。
在IDLE中输 ...

哦哦,谢谢
我更明白flush的用法了~

seas 发表于 2021-5-7 10:15:06

谢谢hldh214讲解,找了很多地方,还是鱼C论坛讲解得最透彻!
页: [1]
查看完整版本: python中print函数中flush参数用法?