Как я могу очистить stux-redirect-buffer в linux уже запущенной программы на python? - PullRequest
2 голосов
/ 14 января 2012

У меня есть долго работающая программа, которую я не хочу убивать, но я хочу увидеть вывод, который у нее есть (это одно предложение каждый час или около того).

Теперь я знаю, что мне нужно очистить вывод в моем скрипте (например, sys.stdout.flush ()), но, поскольку я не хочу его убивать, я надеюсь, что есть какая-нибудь умная команда linux, чтобы сделать этот. Из того, что я читал в Интернете, типичное поведение Linux - очистить его, когда буфер заполнится.

Если никто не знает ответа, вы хоть представляете, насколько велик этот буфер? Было бы неплохо хотя бы получить представление о том, когда нужно проверять:)

[это на Ubuntu 10]

1 Ответ

1 голос
/ 14 января 2012

Чтобы узнать размер буфера для sys.stdout в Ubuntu 11.10, я использовал следующую простую программу:

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. В вашей системе, вероятно, то же самое, но вы можете повторить эксперимент для подтверждения.

В будущем, пожалуйста,Ниже приведены некоторые ссылки, которые могут быть полезны:

...