【发布时间】:2015-09-22 09:20:30
【问题描述】:
考虑以下脚本:
import matplotlib.pyplot as plt
plt.plot([1,2,3], [1,2,3])
plt.show()
每次你运行它时,它都会在一个新的 python.exe 进程中创建一个新的图窗,如果你之前没有关闭图窗的话。但是我想关闭之前所有打开的图(这只是一个例子,请不要matplotlib解决方案),意味着所有之前打开的进程。
这是我的方法:
- 用
os获取当前进程ID - 使用
psutil获取与python相关的所有进程ID - 从所有 python ID 中过滤掉当前 ID
- 杀死剩余的 ID 列表
import os
currentId = os.getpid()
import psutil
allPyIds = [p.pid for p in psutil.process_iter() if "python" in str(p.name)]
PyIdsToKill = [x for x in allPyIds if x != currentId]
for PyId in PyIdsToKill:
os.kill(PyId, 1)
它可以工作,它会关闭除当前进程之外的所有打开的 python 进程。 但是,当实际上有要关闭的进程时,我收到以下错误:
Traceback(最近一次调用最后一次):文件“C:....py”,第 10 行,在 对于 PyIdsToKill 中的 PyId:OSError:[WinError 87] Falscher 参数 [在 0.3 秒内完成,退出代码为 1]
我的错误是什么?
我在 Windows 7 Pro 上运行:
Python 3.4.3(v3.4.3:9b73f1c3e601,2015 年 2 月 24 日,22:44:40)[MSC v.1600 64位(AMD64)]在win32上
【问题讨论】: