gpt4 book ai didi

python - Windows 中 Python 的缓冲输出与非缓冲输出

转载 作者:行者123 更新时间:2023-11-28 22:02:59 26 4
gpt4 key购买 nike

我使用 NppExec/Notepad++ 运行 Python 脚本,并在运行时不断刷新我的输出缓冲区,以使用 print 语句更新我的控制台窗口(默认缓冲输出仅显示所有 在脚本完成执行后打印语句)。

This链接显示您需要做的就是使用命令 python -u 来获得无缓冲的输出。对我的所有 Python 脚本使用这种执行模式是否有缺点,无论使用何种编辑器?我不清楚缓冲输出和未缓冲输出之间的区别。

编辑:我将这个小的 Python 计时器脚本作为示例:

#!usr/bin/env python
import time
import threading
import sys

class Timer(threading.Thread):
def __init__(self, seconds):
self.runTime = seconds
threading.Thread.__init__(self)
def run(self):
counter = self.runTime
for sec in range(self.runTime):
print counter
time.sleep(1.0)
counter -= 1
print "Done."

if __name__ == '__main__':
t = Timer(10)
t.start()

在这种情况下,缓冲和非缓冲输出在效率方面有多大差异?

最佳答案

缓冲输出意味着计算机将输出假脱机存储在内存中的某处,直到累积到一定数量。然后它一次写入整个 block 。这比使用无缓冲输出更有效,无缓冲输出会在您请求写入时立即写入输出。

缺点是您的程序运行速度会慢一点(或很多),具体取决于您编写的输出量。如果它们是不会产生太多输出的短程序,您不太可能注意到差异...

编辑

缓冲输出与非缓冲输出不仅仅是一个 Python 问题。相同的概念(和术语)也适用于其他语言。在较低级别的语言中,它在某些方面变得更加重要——如果我在 C 程序中使用缓冲输出编写消息,然后我的程序由于编程错误而终止,任何在错误之前假脱机的数据,但不是写入磁盘丢失。这不是一个问题,因为让 python 解释器因错误而中止是相当困难的——即使你的代码是错误的,解释器最终仍然会清理好......(除非你向它发送终止信号或其他)...

关于python - Windows 中 Python 的缓冲输出与非缓冲输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10238894/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com