Как закрыть процесс через python
Перейти к содержимому

Как закрыть процесс через python

  • автор:

Как убить процесс игры

Здравствуйте всем.
После небольшого перерыва, вернулся к изучению python.
Необходимо по нажатию клавиши alt закрыть процесс gta-vc, через cmd консоль, но не получается написать в консоли следующую команду «taskkill /f /im gta-vc.exe»

Пожалуйста, подскажите как убить процесс игры?

Пытаюсь реализовать следующем образом.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
import os, time, keyboard from pynput import * def on_release(key): if key == keyboard.Key.alt_l: os.startfile(r'cmd.exe') a = str("taskkill /f /im gta-vc.exe") time.sleep(10) keyboard.write(str(a),delay=10) keyboard.send('enter') # aliases: press_and_release time.sleep(1) return False # Collect events until released while 1: with keyboard.Listener(on_release=on_release) as listener: listener.join()

Лучшие ответы ( 1 )
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Ответы с готовыми решениями:

Как убить процесс?
Подскажите как убить процесс? Желательно любой (вплоть до win.com) Заранее спасиба за ответ

Как убить процесс?
Как убить процесс (скайпа) на C#?

Как убить процесс?
Как убить процесс с помощью программы(консольного приложения)?

Как убить процесс?
Посмотрел на форумах и/к на убивание процесса, у всех делается через код т.е. Process proc =.

Как убить изменённый процесс?
Допустим если имя процесса (файла) изменили, то по обычному имени не убить его, как убить.

307 / 188 / 97
Регистрация: 01.05.2014
Сообщений: 519

Лучший ответ

Сообщение было отмечено Егор Щербанов как решение

Решение

1 2 3 4 5 6 7 8 9 10
import os import keyboard while True: try: if keyboard.is_pressed('Alt'): os.system("taskkill /f /im TOTALCMD64.exe") break except: break

Subprocess — завершить процесс. python 3

В одной папке с программой лежит server.exe (приложение которое работает бесконечно долго). Например:

1 2 3 4
from time import sleep while True: sleep(2) print('. ')

Я хочу запустить его на 10 секунд и для этого пишу следующее:

1 2 3 4 5 6
import subprocess from time import sleep program = "server.exe" process = subprocess.Popen(program) sleep(10) process.terminate() #или я пишу: process.kill()

Эта программа говорит, что завершается успешно, но server.exe не завершился и продолжает работать.
Как решить проблему?

Лучшие ответы ( 1 )
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Ответы с готовыми решениями:

Subprocess python 3
Я писал программу одну с использованием модуля subprocess Запускал консольный процесс с помощью.

Python subprocess
Добрый день есть такая проблема не работает следующий код. import subprocess as sub process = sub.

Завершить процесс
Всем привет, я тут недавно и хотел бы узнать — как создать батник который завершал бы определенную.

Завершить процесс
Всем привет! Пользуюсь программой process explorer. Довольно-таки часто приходится завершать.

Завершить процесс
Как завершить процессор(которые обычно отображаются в диспетчере задач) например надо завершить.

111 / 96 / 35
Регистрация: 03.02.2009
Сообщений: 282

Лучший ответ

Сообщение было отмечено python_novichok как решение

Решение

Попробуй сделать следующее:

1 2 3 4 5 6 7 8 9 10
import os from time import sleep program = "server.exe" os.system('start /d"C:\\Path\\To\\File\\" '+program) sleep(10) os.system("TASKKILL /F /IM "+program) # Если не получится, попробуй прописать полный путь до TASKKILL.exe # (проверить, может отличаться от моего) #os.system("C:\\Windows\\System32\\TASKKILL.exe /F /IM "+program)

Убить процесс в python

Здравствуйте, уважаемые форумчане. Просьба помочь. Имеются две кнопки. По нажатию на первую срабатывает функция запуска процеcса:

def on_task_open(): global proc import subprocess from subprocess import Popen, PIPE proc = subprocess.Popen("konsole -workdir " + full_dir + " -e bash /*/*/OpenFOAM/QW", shell=True)

Работает нормально. Теперь нужно, чтобы после нажатия другой кнопки процесс завершался и консоль закрывалась. Но не работает(((

def on_task_close(): proc.kill()

cdi1989
21.09.15 14:19:13 MSK

В твоей предыдущей теме:

shrub ★★★★★
( 21.09.15 14:22:02 MSK )
Ответ на: комментарий от shrub 21.09.15 14:22:02 MSK

Если бы я понял, как это сделать, то не спрашивал бы

cdi1989
( 21.09.15 14:23:28 MSK ) автор топика
Ответ на: комментарий от cdi1989 21.09.15 14:23:28 MSK

alozovskoy ★★★★★
( 21.09.15 14:26:49 MSK )
Ответ на: комментарий от alozovskoy 21.09.15 14:26:49 MSK

не работает. в случае процесс даже не запускается

cdi1989
( 21.09.15 14:30:10 MSK ) автор топика

УМВР, давай весь код.

deadNightTiger ★★★★★
( 21.09.15 14:36:15 MSK )
Ответ на: комментарий от deadNightTiger 21.09.15 14:36:15 MSK

В первом сообщении и есть основной код. Первая ф-ция работает норм, т.е. консоль открывается и процесс запускается. а вторая не работает

cdi1989
( 21.09.15 14:41:48 MSK ) автор топика
Ответ на: комментарий от cdi1989 21.09.15 14:41:48 MSK

В первом сообщении и есть основной код.

Почитай про пространства имён. Судя по всему, ты пытаешься грохнуть несуществующий процесс. Поэтому у тебя и «не работает».

Потому что proc из первой функции и proc из второй — это две разных переменных?

shrub ★★★★★
( 21.09.15 14:43:58 MSK )
Последнее исправление: shrub 21.09.15 14:45:27 MSK (всего исправлений: 1)

Ответ на: комментарий от cdi1989 21.09.15 14:30:10 MSK

В смысле если в on_task_close заменить proc.kill() на proc.terminate() то процесс не запускается? Он ведь у тебя в другой функции запускается.

MrClon ★★★★★
( 21.09.15 14:45:11 MSK )
Ответ на: комментарий от MrClon 21.09.15 14:45:11 MSK

и с тем и другим не запускается

cdi1989
( 21.09.15 14:47:49 MSK ) автор топика
Ответ на: комментарий от shrub 21.09.15 14:43:58 MSK

Так а если глобальной ее сделать??

cdi1989
( 21.09.15 14:48:40 MSK ) автор топика

P.S. импорты полагается делать в начале файла, а не в теле функции. И зачем делать «from subprocess import Popen, PIPE» если до этого уже сделал «import subprocess»?

MrClon ★★★★★
( 21.09.15 14:49:25 MSK )
Ответ на: комментарий от cdi1989 21.09.15 14:47:49 MSK

Так всё-таки «Первая ф-ция работает норм, т.е. консоль открывается и процесс запускается. а вторая не работает» или «и с тем и другим не запускается»?

MrClon ★★★★★
( 21.09.15 14:51:10 MSK )
Ответ на: комментарий от cdi1989 21.09.15 14:48:40 MSK

Ну вот ты сделал её глобальной в первой функции, и при этом пытаешься во второй работать с локальной как с глобальной. Ну и что тебе это дало, кроме неработающего кода?

shrub ★★★★★
( 21.09.15 14:54:26 MSK )
Ответ на: комментарий от MrClon 21.09.15 14:51:10 MSK

Вот с этим все таки запускается: proc.kill()

Но пишет ошибку NameError: name ‘proc’ is not defined

хотя я объявил global proc

cdi1989
( 21.09.15 14:55:34 MSK ) автор топика
Ответ на: комментарий от cdi1989 21.09.15 14:55:34 MSK

Но пишет ошибку NameError: name ‘proc’ is not defined

Ещё раз: Почитай про пространства имён.

shrub ★★★★★
( 21.09.15 14:59:33 MSK )
Ответ на: комментарий от shrub 21.09.15 14:59:33 MSK

Если присваивание производится за пределами всех инструкций def, она является глобальной для всего файла.

я так и делаю. а он говорит не определено((

cdi1989
( 21.09.15 15:05:33 MSK ) автор топика
Ответ на: комментарий от cdi1989 21.09.15 15:05:33 MSK

>>> a = 'test' >>> def f1(): . global a . a = 'test 1' . >>> def f2(): . a = 'test 2' . >>> print a test >>> f1() >>> print a test 1 >>> f2() >>> print a test 1 >>> 

Почему у меня после вызова f2() переменная содержит значение ‘test 1’?

shrub ★★★★★
( 21.09.15 15:11:36 MSK )
Ответ на: комментарий от shrub 21.09.15 15:11:36 MSK

Потому что после вызова f1() a = ‘test 1’ стала глобальной

cdi1989
( 21.09.15 15:14:29 MSK ) автор топика
Ответ на: комментарий от shrub 21.09.15 15:11:36 MSK

В этом случае у меня даже не запускается((

def on_task_open(): global proc import subprocess from subprocess import Popen, PIPE proc = subprocess.Popen("konsole -workdir " + full_dir + " -e bash /*/*/OpenFOAM/QW", shell=True)
def on_task_close(): proc.kill()

cdi1989
( 21.09.15 15:17:06 MSK ) автор топика
Ответ на: комментарий от cdi1989 21.09.15 15:14:29 MSK

Почему тогда после вызова f2() переменная глобальная переменная «a» не приняла значение «test 2»?

MrClon ★★★★★
( 21.09.15 15:34:22 MSK )
Ответ на: комментарий от MrClon 21.09.15 15:34:22 MSK

Потому что она объявлена глобальной внутри f1() и, следовательно, именно это значение переменной «a» мы можем получить в других функциях

cdi1989
( 21.09.15 15:38:23 MSK ) автор топика
Ответ на: комментарий от cdi1989 21.09.15 15:17:06 MSK

В этом случае у меня даже не запускается((

Что значит, «не запускается»? Ошибка происходит?

proc = subprocess.Popen(«konsole -workdir » + full_dir + » -e bash /*/*/OpenFOAM/QW», shell=True)

Ты, может быть, имел в виду «konsole -workdir » + full_dir + » -e ‘bash /*/*/OpenFOAM/QW'» #Экранирован параметр к -e

Или, может быть, subprocess.Popen([‘konsole’, ‘-workdir’, full_dir, ‘-e’, ‘bash /*/*/OpenFOAM/QW’]) ?

proud_anon ★★★★★
( 21.09.15 16:26:42 MSK )
Ответ на: комментарий от cdi1989 21.09.15 15:38:23 MSK

Блин, ты так хитро запутался что я даже не знаю как тебя распутать. Лучшее что могу посоветовать это забыть всё что ты знаешь об областях видимости переменных и прочесть о том как оно на самом деле.
Что с ходу нагуглилось https://ru.wikibooks.org/wiki/Python/Учебник_Python_3.1#.D0.9E.D0.B1.D0.BB.D0.

Но перед тем всё-же можешь подумать почему функция f1() обращается к глобальной переменной «a», а f2() к локальной.

MrClon ★★★★★
( 21.09.15 16:52:33 MSK )
Ответ на: комментарий от shrub 21.09.15 15:11:36 MSK

a = 'test' # 'а' - глобальная переменная def f1(): global a # 'а' теперь берётся из глобальной области видимости # (действительно только для текущей области видимости, т.е в f1) a = 'test 1' def f2(): a = 'test 2' # Присваивание для локальной переменной 'a' (в текущей области видимости) 

dimderbin ★
( 21.09.15 19:05:06 MSK )
Последнее исправление: dimderbin 21.09.15 19:05:48 MSK (всего исправлений: 1)

Ответ на: комментарий от cdi1989 21.09.15 14:47:49 MSK

и с тем и другим не запускается

cherry-pick
( 21.09.15 21:11:34 MSK )
Ответ на: комментарий от shrub 21.09.15 14:43:58 MSK

Судя по всему, ты пытаешься грохнуть несуществующий процесс. Поэтому у тебя и «не работает».
Потому что proc из первой функции и proc из второй — это две разных переменных?

Я не понял, в питоне что нельзя вывести ероры и варнинги в консоль куда-нибудь?
Если будет ошибка — сразу понятно что случилось.
К примеру: variable is not defined
И тогда человек знает, ок, почему это не определена, и далее курит про пространство имет и т.п.

kiotoze ★★★★
( 21.09.15 22:19:26 MSK )

Народ, а нас случаем не внесут в реестр за такую провакационную тему как убийство?

itn ★★★
( 21.09.15 22:50:10 MSK )
Ответ на: комментарий от kiotoze 21.09.15 22:19:26 MSK

Смотри Убить процесс в python (комментарий)
Топикстартер завис где-то между шагами «увидеть variable is not defined» и «курить про пространство имен»

MrClon ★★★★★
( 21.09.15 23:01:02 MSK )
Ответ на: комментарий от MrClon 21.09.15 23:01:02 MSK

оу, кажется я пропустил этот пост
П.С. звиняйте, нажрался. Наверное пора закрывать на сегодня вкладку с ЛОР

Как завершить процесс python multiprocess

у меня есть процесс хочу по его названию( не по PID ) завершить его, как это реализовать?

Отслеживать

задан 2 июн 2021 в 13:17

Артём Новокеков Артём Новокеков

27 3 3 бронзовых знака

Покажите пожалуйста в вопросе, где у вас есть процесс?

2 июн 2021 в 13:50

1 ответ 1

Сортировка: Сброс на вариант по умолчанию

непонятно что имеется виду, если это рукотворный multiprocess процесс, то соответственно есть и его объект, у которого есть имя и метод terminate, берете объект процесса, сравниваете его имя, и при необходимости завершаете через terminate

import multiprocessing, time, random def test(s, m=500): while m > 0: print(f' = ') m -= 1 time.sleep(.5) if __name__ == '__main__': multiprocessing.freeze_support() count = 3 prcss = [multiprocessing.Process(name=f'test_', target=test, args=[f'run_test_']) for r in range(count)] pnames = [p.name for p in prcss] # имена процессов for p in prcss: p.start() while prcss: for p in prcss: name = random.choice(pnames) if p.name == name: # завершить по его названию p.terminate() prcss.remove(p) print(f'KILL 

') break time.sleep(1)

если это сторонний процесс, то через psutil

import psutil for proc in psutil.process_iter(): if proc.name() == 'test process': # завершить по его названию proc.kill() break 

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *