Форум сайта python.su
Еще один вопрос в последнем посте.
Здравствуйте. Подскажите как выполнить следующую строчку.
ray.exe -v 5 -x on -imgpipe 1 “scene.mi” | imf_disp -
-imgpipe fd
При использовании ключа -imgpipe информация может быть выведена на устройство с дескриптором fd. Например, этот ключ можно использовать для интерактивного подключения к конвейеру вывода программы-вьювера imf_disp.exe
сейчас без imgpipe я делаю примерно так:
cmd = + + + + +
process = subprocess.Popen(args=cmd, bufsize=1, shell=False, env=os.environ)
При этом идет рендер и в консоль выводятся всякие сообщения
при попытке добавить -imgpipe 1 цыфры начинают попадать прямо в консоль в перемешку с сообщениями.
и я не понял как указать Popen-у вот это | imf_disp -
Спасибо.
Отредактировано (Сен. 10, 2008 20:31:14)
Офлайн
или подскажите направление
Офлайн
Я для таких вещей использую os.system.
Офлайн
severum по идее кошернее использовать subprocess.
Не очень понял в вопросе вот это место:
“-imgpipe fd” - почему оно со следующей строчки. Это вообще к чему? =)
Отвечаю на то, что понял.
Попробуй все загнать в виде строки: args = “ray.exe -v 5 -x on -imgpipe 1 ”scene.mi“ | imf_disp и_что_то_там_еще”
(в документации так написано: args should be a string, or a sequence of program arguments. The program to execute is normally the first item in the args sequence or string, but can be explicitly set by using the executable argument.
)
Имхо чтоб работали каналы - (вот эта вот вертикальная палочка | ) - надо все это в шелле выполнятть. Т.е. shell=True
Отредактировано (Сен. 9, 2008 03:12:33)
Офлайн
Спасибо, subprocess действительно кошернее.
-imgpipe fd не наследующей строчке, это просто кусок из описания.
Все заработало.
Офлайн
Как я понял есл я хочу запустить приложение с другим приоритетов под win то это делается так
creationFlags = win32process.BELOW_NORMAL_PRIORITY_CLASS
process = subprocess.Popen(cmd, shell=shellFlag, stdout=subprocess.PIPE, creationflags = creationFlags)
pid = process.pid
Но хочется еще контролировать процесс во время выполнения.
- возможен случай когда приложение виснит во время рендера. как это можно понять?
- хочется в произвольный момент завершить процесс. например если он повис
Офлайн
severumТут сложность в том, что так как ты запускаешь в шелле, то и приоритет повышенный получит шелл. Помню когда-то эту проблему разбирали на форуме
Как я понял есл я хочу запустить приложение с другим приоритетов под win то это делается так
severumЯ могу придумать несклько вариантов - как понять, что что-то зависло.
- возможен случай когда приложение виснит во время рендера. как это можно понять?
severumМожно убить процесс по pid.
хочется в произвольный момент завершить процесс. например если он повис
Офлайн
спасибо за помощь.
Офлайн
severumПосмотрите тему http://python.com.ua/forum/viewtopic.php?id=2599 девятый пост, похоже это то что Вы ищите
Но хочется еще контролировать процесс во время выполнения.
- возможен случай когда приложение виснит во время рендера. как это можно понять?
- хочется в произвольный момент завершить процесс. например если он повис
Офлайн