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

时间:2012-01-14 04:31:59

标签: python linux ubuntu buffering stdio

我有一个长期运行的程序,我不想杀,但我确实想看到它的输出(每小时左右一个句子)。

我现在知道我需要刷新脚本中的输出(例如sys.stdout.flush()),但是因为我不想杀掉它,所以我希望有一些聪明的linux命令可以做这个。从我在网上看到的,典型的linux行为是在缓冲区填满时刷新它。

如果没人知道答案,你知道这个缓冲区有多大吗?如果至少知道何时检查,那将是很好的。)

[这是在Ubuntu 10上]

1 个答案:

答案 0 :(得分:1)

要在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.在您的系统中可能是相同的,但您可以重复实验来确认。

将来,请在下面找到一些有用的链接: