import psutil
import subprocess
import time
def proc_kill(proc_name):
'''таск киллер'''
for proc in psutil.process_iter():
if proc.name() == proc_name:
psutil.Process(proc.pid).kill()
print('внешний процесс %s который надо остановить' % proc_name)
break
if __name__ == '__main__':
proc = 'calc.exe' # О процессе ,который надо завершить, известно его имя
for r in range(5):
print('Допустим, код выполняется до определенного момента')
if r == 2:
print('затем винда запускает внешний процесс %s' % proc)
subprocess.Popen(proc)
print('перед срабатыванием таск киллера необходима небольшая задержка')
time.sleep(2)
proc_kill(proc) # таск киллер
print('и лишь потом продолжить выполнение кода')
出去:
Допустим, код выполняется до определенного момента
Допустим, код выполняется до определенного момента
Допустим, код выполняется до определенного момента
затем винда запускает внешний процесс calc.exe
перед срабатыванием таск киллера необходима небольшая задержка
внешний процесс calc.exe который надо остановить
и лишь потом продолжить выполнение кода
Допустим, код выполняется до определенного момента
Допустим, код выполняется до определенного момента
要在指定时间后中断外部命令
timeout
,可以在启动时传递一个参数:如果
command
它没有在timeout
几秒钟内完成,那么相应的进程就会被杀死并抛出subprocess.TimeoutExpired
异常。有时这还不够,需要手动终止整个进程树,尤其是当您正在读取外部命令的输出时。下面是支持旧版本 Python (Python 2) 的示例代码,展示了如何在几秒钟后停止“永恒”的外部命令,并在其运行时累积其输出。如果您不想在执行命令时阻塞主线程,那么有很多方法可以异步地与命令交互,要查找不同情况的代码示例,请点击链接。如果命令在 Python 之外运行并且你想在给定时间后按名称终止它:
.wait()
如果进程退出或超时(以先到者为准),则终止。这与它的subprocess.call()
实现方式非常接近。在 Python 中还有许多其他方法可以延迟函数的执行,例如,在
timeout
几秒钟内运行函数而不会一直阻塞主线程:更多:
time.sleep(timeout)
要么time.sleep(interval - timer() % interval)
,要么Event.wait(timeout)
,或者使用来自适当事件循环(事件循环)的方法——选择什么取决于具体任务。通常,要中断 Python 中函数的执行,请参阅函数调用超时。如何通过名称查找进程并杀死它的实现示例:
出去: