Уведомления

Группа в Telegram: @pythonsu

#1 Сен. 6, 2008 17:38:25

severum
От:
Зарегистрирован: 2008-01-06
Сообщения: 54
Репутация: +  0  -
Профиль   Отправить e-mail  

запуск процесса с перенаправление вывода.

Еще один вопрос в последнем посте.

Здравствуйте. Подскажите как выполнить следующую строчку.

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)

Офлайн

#2 Сен. 7, 2008 20:35:11

severum
От:
Зарегистрирован: 2008-01-06
Сообщения: 54
Репутация: +  0  -
Профиль   Отправить e-mail  

запуск процесса с перенаправление вывода.

или подскажите направление



Офлайн

#3 Сен. 8, 2008 13:22:29

Viper
От:
Зарегистрирован: 2006-11-08
Сообщения: 137
Репутация: +  0  -
Профиль   Отправить e-mail  

запуск процесса с перенаправление вывода.

Я для таких вещей использую os.system.



Офлайн

#4 Сен. 9, 2008 03:11:40

shiza
От:
Зарегистрирован: 2007-07-03
Сообщения: 1073
Репутация: +  0  -
Профиль   Отправить e-mail  

запуск процесса с перенаправление вывода.

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)

Офлайн

#5 Сен. 10, 2008 19:42:38

severum
От:
Зарегистрирован: 2008-01-06
Сообщения: 54
Репутация: +  0  -
Профиль   Отправить e-mail  

запуск процесса с перенаправление вывода.

Спасибо, subprocess действительно кошернее.
-imgpipe fd не наследующей строчке, это просто кусок из описания.
Все заработало.



Офлайн

#6 Сен. 10, 2008 20:38:35

severum
От:
Зарегистрирован: 2008-01-06
Сообщения: 54
Репутация: +  0  -
Профиль   Отправить e-mail  

запуск процесса с перенаправление вывода.

Как я понял есл я хочу запустить приложение с другим приоритетов под win то это делается так
creationFlags = win32process.BELOW_NORMAL_PRIORITY_CLASS
process = subprocess.Popen(cmd, shell=shellFlag, stdout=subprocess.PIPE, creationflags = creationFlags)
pid = process.pid

Но хочется еще контролировать процесс во время выполнения.
- возможен случай когда приложение виснит во время рендера. как это можно понять?
- хочется в произвольный момент завершить процесс. например если он повис



Офлайн

#7 Сен. 11, 2008 00:21:04

shiza
От:
Зарегистрирован: 2007-07-03
Сообщения: 1073
Репутация: +  0  -
Профиль   Отправить e-mail  

запуск процесса с перенаправление вывода.

severum
Как я понял есл я хочу запустить приложение с другим приоритетов под win то это делается так
Тут сложность в том, что так как ты запускаешь в шелле, то и приоритет повышенный получит шелл. Помню когда-то эту проблему разбирали на форуме

severum
- возможен случай когда приложение виснит во время рендера. как это можно понять?
Я могу придумать несклько вариантов - как понять, что что-то зависло.
1. если это что-то работает уже хрен знает сколько времени. Можно еще на результат глядеть - если результат не меняется и оно работает уже хрен знает сколько времени, то наверняк зависло.
2. так называемый Watch Dog - работающее приложение переодически шлет какой-нибудь сигнал. Если сигналы
перестали поступать - то наверное оно зависло.
Может что-то из этого можно рименить к твоему приложению.

severum
хочется в произвольный момент завершить процесс. например если он повис
Можно убить процесс по pid.



Офлайн

#8 Сен. 16, 2008 11:12:54

severum
От:
Зарегистрирован: 2008-01-06
Сообщения: 54
Репутация: +  0  -
Профиль   Отправить e-mail  

запуск процесса с перенаправление вывода.

спасибо за помощь.



Офлайн

#9 Сен. 17, 2008 08:21:43

pyuser
От:
Зарегистрирован: 2007-05-13
Сообщения: 658
Репутация: +  36  -
Профиль   Отправить e-mail  

запуск процесса с перенаправление вывода.

severum
Но хочется еще контролировать процесс во время выполнения.
- возможен случай когда приложение виснит во время рендера. как это можно понять?
- хочется в произвольный момент завершить процесс. например если он повис
Посмотрите тему http://python.com.ua/forum/viewtopic.php?id=2599 девятый пост, похоже это то что Вы ищите



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version