Ferroman
Ноя. 30, 2007 16:30:58
Проблема такова
я запускаю процесс (под win), но мне нужно установить приоритет для него. Как это сделать? Поиски ничего толком не дали.
line = 'FileConverter.exe '+ option + ' -version '
process = subprocess.Popen(line, shell=True, stdout=subprocess.PIPE)
process.wait()
Заранее спасибо.
shiza
Ноя. 30, 2007 17:40:29
Popen( args, bufsize=0, executable=None, stdin=None, stdout=None, stderr=None, preexec_fn=None, close_fds=False, shell=False, cwd=None, env=None, universal_newlines=False, startupinfo=None, creationflags=0)
……
The startupinfo and creationflags, if given, will be passed to the underlying CreateProcess() function. They can specify things such as appearance of the main window and priority for the new process. (Windows only)
……
Функция CreateProcess() - это функция из модуля - pywin32: win32process.CreateProcess()
Ferroman
Ноя. 30, 2007 17:52:34
shiza
The startupinfo and creationflags, if given, will be passed to the underlying CreateProcess() function. They can specify things such as appearance of the main window and priority for the new process. (Windows only)
Да это я видел. Только что конкретно нужно установить, какие флаги или опции использовать я не нашел. Только это одно упоминание.
shiza
Ноя. 30, 2007 18:04:23
import win32process
CreationFlags = win32process.HIGH_PRIORITY_CLASS
Это в качестве наводки….
Ибо тут разобратся надо, чтоб приоритет повышался у приложения, а не у shell.
Наверное надо покопать доку на win32process.CreateProcess()
Ferroman
Ноя. 30, 2007 18:20:16
Ага, спасибо, это я неправильно перевёл “Indicates a process…”
UPD: Действительно изменяет приоритет шелла а не приложения.
Ferroman
Ноя. 30, 2007 19:04:35
Проблема приоритета решилась:
line = 'start /wait /low /b FileConverter.exe '+ option + ' -version '
process = subprocess.Popen(line, shell=True, stdout=subprocess.PIPE)
process.wait()
Основная проблема - как сделать так, что б в цикле не запускалось много таких процессов, а они шли по-очереди? Сейчас у меня запускаеться куча процессов с низким приоритетом….
shiza
Ноя. 30, 2007 19:06:19
По моему в этом случае c output будут проблемы.
qman
Июль 21, 2008 12:33:11
Ferroman
line = ‘FileConverter.exe ’+ option + ‘ -version ’
process = subprocess.Popen(line, shell=True, stdout=subprocess.PIPE)
process.wait()
подскажите у вас код
приостанавливает выполенние скрипта до завершения process ?
я аналогично запускаю start /belownormal 7z a archivename filetopack
но process.wait() сразу же отрабатывает и продолжается выполнение скрипта.
А без start все работает как надо.
только не знаю как приоритет понизить для процесса.
может подскажете как добиться остановки скрипта до завершения subprocess?
Ferroman
Июль 21, 2008 22:11:38
У меня тоже не сработало. Я переделал - убрал “start” и понизил процесс в самой программе, которую вызываю - тогда wait работает.
В вашем случае, я бы использовал LZMA SDK (
http://www.7-zip.org/sdk.html) точнее PyLZMA (
http://www.joachim-bauch.de/projects/python/pylzma), и просто делал сжатие в отдельном питоновском потоке.
Что-то тег url не сработал :/
qman
Июль 22, 2008 08:12:39
Ferroman
понизил процесс в самой программе
подскажите как вы понизили процесс в самой программе?
P.S. Поправьте меня если я ошибаюсь, при использовании start создаются 2 процесса : start и 7z. Мы имеем возможность отследить завершение процесса start, а завершение второго 7z второго никак..
P.S. я из ms sql сервера делаю дамп базы данных в файл, а потом его упаковываю, может как то можно красиво сделать без создания временного файла?
СПАСИБО