Уведомления

Группа в Telegram: @pythonsu

#1 Авг. 31, 2013 13:44:28

leonid_10
От:
Зарегистрирован: 2010-03-28
Сообщения: 197
Репутация: +  3  -
Профиль   Отправить e-mail  

Убить процесс при запущенных двух одноимённых

Запущен процесс pvengine.exe на длительное время. Пока процесс идёт, нужно ещё раз вызвать pvengine.exe и убить его, чтобы первый запущенный не пострадал.
Я нарыл TASKKILL, но что-то совсем не разобрался с этими PID, если это, вообще, то, что нужно.



Офлайн

#2 Авг. 31, 2013 17:44:35

sanodin
От:
Зарегистрирован: 2011-06-16
Сообщения: 515
Репутация: +  31  -
Профиль   Отправить e-mail  

Убить процесс при запущенных двух одноимённых

Убивает новые процессы

import wmi
import subprocess
c = wmi.WMI()
process_watcher = c.Win32_Process.watch_for("creation")
 
#subprocess.Popen('taskkill /PID %s /T /f' % 'explorer.exe', shell = True)   
while True:
    new_process = process_watcher()
    
    print new_process.Caption 
    
    
    subprocess.Popen('taskkill /PID %s /T /f' % new_process.Caption, shell = True)
либо убрать последнюю строчку, будет простой монитор вновь запущенных процессов
в твоем случае убивать процесс надо не по имени а по номеру

или
import psutil
PROCNAME = "notepad.exe"
for proc in psutil.process_iter():
  if proc.name == PROCNAME:
    print proc.name
    print proc.pid
    proc.kill()

Отредактировано sanodin (Авг. 31, 2013 18:02:05)

Офлайн

#3 Авг. 31, 2013 18:38:24

leonid_10
От:
Зарегистрирован: 2010-03-28
Сообщения: 197
Репутация: +  3  -
Профиль   Отправить e-mail  

Убить процесс при запущенных двух одноимённых

sanodin, благодарствую! Завтра проверю, сегодня уже башка совсем не варит.
Я просто поясню, что именно было нужно:
Рендер поврей в винде открывает своё окно IDLE зачем-то всегда и, хотя просчёт окончен, процесс всё-равно считается незавершённым, пока не ткнёшь курсором в крестик на шапке и не закроешь это окно. Но, у меня рендер задействован как для просчёта трёхмерной сцены, так и для создания превьюшек текстур. То есть, юзер может запустить просчёт сцены на несколько десятков минут и, в это же время настраивать текстуру для какого-нибудь объекта вновь и вновь вызывая pvengine.exe. При этом ему без конца и края придётся вручную закрывать окно. В линуксе такого безобразия нету с этой прогой.
Так вот, собственно, я и использую subprocess для старта.
Для линукса мне пришлось написать вот так:

        p1=subprocess.Popen(["%s"%pov_binary,"-d","%s/Preview.ini"%previewDir],stdout=subprocess.PIPE,stderr=subprocess.STDOUT)
        p1.wait()
Работает в линуксе, а винде открывает окно и, пока его не закроешь рукой не появляется outputFile
Возможно, мне не нужно и отыскивать его, а прямо тут где-то его убить,



Отредактировано leonid_10 (Авг. 31, 2013 19:20:27)

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version