python - 如何刷新已经运行的 python 程序的 linux stdio-redirect-buffer?

标签 python linux ubuntu buffering stdio

我有一个我不想终止的长时间运行的程序,但我确实想查看它的输出(大约每小时一个句子)。

我现在知道我需要刷新脚本中的输出(例如 sys.stdout.flush()),但由于我不想终止它,我希望有一些聪明的 linux 命令可以执行这个。根据我在网上阅读的内容,典型的 linux 行为是在缓冲区填满时刷新它。

如果没人知道答案,你知道这个缓冲区有多大吗?至少知道何时回来查看会很好 :)

[这是在 Ubuntu 10 上]

最佳答案

为了找出 Ubuntu 11.10 中 sys.stdout 的缓冲区大小,我使用了以下简单程序:

import sys, time

buf_size = 1024
for counter in xrange(buf_size):
    sys.stdout.write('a')
time.sleep(3)

实验如下:

  • 如果 buf_size 太大,部分字符串会立即打印到控制台,其余部分在三秒后打印。
  • 如果 buf_size 太小,三秒后打印整个输出。

在我的例子中,当缓冲区大小设置为 1024 时,在程序退出之前我没有得到任何输出,但是当我将其设置为 1025 时,我看到了很多字符,三秒后,又出现了一个字符打印出来。

因此,在我的系统中缓冲区大小是1024。在你的系统中可能是相同的,但你可以重复实验来确认。

对于 future ,请在下面找到一些可能有用的链接:

关于python - 如何刷新已经运行的 python 程序的 linux stdio-redirect-buffer?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8860157/

相关文章:

python - 选择排序与插入排序的效率

python - 在python中模拟回归线的数据

linux - 在内核模块中获取根设备

linux - 使用 Bash 或 Perl 将一行文本替换为目录中的多个文件

python - Linux下如何用Python创建master进程?

linux - Linux 中的 echo 命令到串口

ubuntu - 找不到包 tsodbc

php - unixODBC PHP 更新语句错误

linux - 在 ubuntu 终端中跳转到命令历史末尾的键盘快捷键

Python tkinter TreeView 列大小