import multiprocessing
import psutil
import os
import time
import subprocess
cmd1="python b.py" #b.py加了打印
cmd2="python c.py"#c.py加了打印
cmd_pre = [p for p in psutil.process_iter(['name']) if p.name() == 'python']
print("cmd_pre:", cmd_pre) #打印当前进程中的python进程
subprocess.Popen("gnome-terminal -- bash -c \"" + cmd1 + ";bash\"", shell=True)
subprocess.Popen("gnome-terminal -- bash -c \"" + cmd2 + ";bash\"", shell=True)
#上面两行是linux python启动新窗口并运行俩python进程,gnome-terminal -e会报警告,改为--
time.sleep(2) #加延迟,否则前后打印的进程一样
cmd_post = [p for p in psutil.process_iter(['name']) if p.name() == 'python']
print("cmd_post:", cmd_post)
try:
while True:
pass
except KeyboardInterrupt:
for p2 in [p2 for p2 in cmd_post if p2 not in cmd_pre]:
p2.terminate() #linux 终止进程,也可以用kill
os.kill(p2.ppid(), 15) #linux 关闭终止进程终端
# 等待一段时间以确保进程已经终止
# time.sleep(2)