Я управляю длительным моделированием (часами, днями, даже неделями), используя скрипт bash, который перебирает все нужные параметры. Если одновременно выполняется только одно моделирование, выходные данные передаются в «tee», в противном случае выходные данные просто передаются «>» в выходной файл. Весь вывод огромен: некоторые файлы журналов ~ 2 ГБ и могут быть еще больше.
Скрипт работает, но поддерживать его очень просто. Когда мы добавляем новый параметр, требуется некоторое время, чтобы адаптировать скрипт и весь sed-foo в нем. Так что я перенес это на Python. Это работает БОЛЬШОЙ.
Единственная проблема, которая у меня сейчас мешает использовать ее в работе, заключается в том, что я не могу найти правильный способ вызова Popen () для запуска программы. Если я запускаю его «беззвучно», передавая все в файл и не показывая никакого вывода, python берет гигабайты оперативной памяти до того, как симуляция будет завершена.
Вот фрагмент кода:
fh = open(logfile, "w")
pid = subprocess.Popen(shlex.split(command), stdout=fh)
pids.append(pid)
Я читал много материала о выводе Popen, но я думал, что при его передаче в файл при необходимости очистится буфер?
Может быть, подпроцесс Popen () не самый лучший для этого? Каков наилучший способ показать и сохранить выходные данные программы на экране и в файле, не занимая все оперативной памяти?
Thanx!