Найти - Пользователи
Полная версия: Приоритет запускаемого процесса в Win
Начало » Python для экспертов » Приоритет запускаемого процесса в Win
1 2
Ferroman
Проблема такова
я запускаю процесс (под win), но мне нужно установить приоритет для него. Как это сделать? Поиски ничего толком не дали.
line = 'FileConverter.exe '+ option + ' -version '
process = subprocess.Popen(line, shell=True, stdout=subprocess.PIPE)
process.wait()
Заранее спасибо.
shiza
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
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
import win32process
CreationFlags = win32process.HIGH_PRIORITY_CLASS

Это в качестве наводки….
Ибо тут разобратся надо, чтоб приоритет повышался у приложения, а не у shell.
Наверное надо покопать доку на win32process.CreateProcess()
Ferroman
Ага, спасибо, это я неправильно перевёл “Indicates a process…”
UPD: Действительно изменяет приоритет шелла а не приложения.
Ferroman
Проблема приоритета решилась:
 line = 'start /wait /low /b FileConverter.exe '+ option + ' -version '
process = subprocess.Popen(line, shell=True, stdout=subprocess.PIPE)
process.wait()
Основная проблема - как сделать так, что б в цикле не запускалось много таких процессов, а они шли по-очереди? Сейчас у меня запускаеться куча процессов с низким приоритетом….
shiza
По моему в этом случае c output будут проблемы.
qman
Ferroman
line = ‘FileConverter.exe ’+ option + ‘ -version ’
process = subprocess.Popen(line, shell=True, stdout=subprocess.PIPE)
process.wait()
подскажите у вас код
process.wait()
приостанавливает выполенние скрипта до завершения process ?
я аналогично запускаю start /belownormal 7z a archivename filetopack

но process.wait() сразу же отрабатывает и продолжается выполнение скрипта.
А без start все работает как надо.
только не знаю как приоритет понизить для процесса.
может подскажете как добиться остановки скрипта до завершения subprocess?
Ferroman
У меня тоже не сработало. Я переделал - убрал “start” и понизил процесс в самой программе, которую вызываю - тогда wait работает.
В вашем случае, я бы использовал LZMA SDK (http://www.7-zip.org/sdk.html) точнее PyLZMA (http://www.joachim-bauch.de/projects/python/pylzma), и просто делал сжатие в отдельном питоновском потоке.

Что-то тег url не сработал :/
qman
Ferroman
понизил процесс в самой программе
подскажите как вы понизили процесс в самой программе?
P.S. Поправьте меня если я ошибаюсь, при использовании start создаются 2 процесса : start и 7z. Мы имеем возможность отследить завершение процесса start, а завершение второго 7z второго никак..
P.S. я из ms sql сервера делаю дамп базы данных в файл, а потом его упаковываю, может как то можно красиво сделать без создания временного файла?
СПАСИБО
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB