【发布时间】:2020-11-26 11:25:53
【问题描述】:
有没有办法在 Python 中从 8182 增加 stdout 缓冲区大小
或
延迟刷新,直到我真正打电话给flush?
我尝试过但不起作用的方法:
- 我可以在 Windows 上解决这个问题,因为我可以直接访问缓冲区(例如see my answer to this post)。但这不适用于 Unix。
- 我可以通过将
buffer传递给构造函数来增加文件的缓冲区大小,但是stdout已经构造好了。 -
Turning off buffering (
python -u) 显然让事情变得更糟! - 使用临时缓冲区会遇到同样的问题 - 在从临时缓冲区复制每个第 8192 个字节后,
stdout会被刷新。
理由:这里的目的是减少控制台闪烁。根据this question 缓冲所有内容确实有效,例如当我尝试使用 C 或在 Python 中使用 Windows API 时,但 Python 中的 8182 限制似乎导致了我无法在 Unix 上解决的问题。
【问题讨论】:
-
我想知道你为什么需要这样做:)
-
为什么要这样做?听起来您可能会更好地使用其他方法,例如自己进行缓冲。
-
“当临时缓冲区最终被复制到标准输出时,使用临时缓冲区会遇到同样的问题。” - 什么问题?
-
听起来你应该问一个关于避免终端闪烁的问题,而不是关于缓冲区大小调整的问题。
标签: python