Найти - Пользователи
Полная версия: Убить процесс при запущенных двух одноимённых
Начало » Python для новичков » Убить процесс при запущенных двух одноимённых
1
leonid_10
Запущен процесс pvengine.exe на длительное время. Пока процесс идёт, нужно ещё раз вызвать pvengine.exe и убить его, чтобы первый запущенный не пострадал.
Я нарыл TASKKILL, но что-то совсем не разобрался с этими PID, если это, вообще, то, что нужно.
sanodin
Убивает новые процессы
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()
leonid_10
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
Возможно, мне не нужно и отыскивать его, а прямо тут где-то его убить,
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