共计 971 个字符,预计需要花费 3 分钟才能阅读完成。
有天,老板突然说他想要调整下服务器上进程的优先级,看看会不会有更好的性能表现?让我调研一下在 windows 机器上怎么实现?
一听是调研,那不是轻车熟路。熟练的打开 Google,输入“修改进程优先级”,回车!
啊这 … 全是 Linux 相关的文章。一点不慌,加上关键词“Windows”,再搜一次。
Easy,分分钟搞定一个需求。不仅有 UI 版本,还有命令行版本。
Windows 的进程优先级
根据官方文档的介绍,一共有下面 8 个级别。
修改优先级的方法
方法一:通过任务管理器,修改进程优先级
如图所示,非常的简单,只要在“详细信息”找到对应的进程,右击“设置优先级”即可。修改后的优先级只能是提供的 6 种之一。
方法二:通过命令行修改
wmic process where ProcessId={pid} CALL setpriority "{prio}"
按上面的命令,将 {pid} 替换成目标进程 id,{prio}替换成优先级。
prio 的枚举如下:
prio | 含义 |
---|---|
realtime | 实时 |
normal | 正常 |
idle | 低 |
high priority | 高 |
below normal | 低于正常 |
above normal | 高于正常 |
方法三:Python 代码
需要 python3, 依赖模块 pywin32。
import win32api,win32process,win32con
# 处理优先级常量
ABOVE_NORMAL_PRIORITY_CLASS = 0x00008000
BELOW_NORMAL_PRIORITY_CLASS = 0x00004000
HIGH_PRIORITY_CLASS = 0x00000080
IDLE_PRIORITY_CLASS = 0x00000040
NORMAL_PRIORITY_CLASS = 0x00000020
REALTIME_PRIORITY_CLASS = 0x00000100
# 获得进程句柄
hProcess = win32api.OpenProcess(win32con.PROCESS_ALL_ACCESS, False, pid)
# 设置进程优先级
win32process.SetPriorityClass(hProcess, HIGH_PRIORITY_CLASS)
# 关闭进程句柄
win32api.CloseHandle(hProcess)
老板:嗯,干的不错。我现在想改 IO 优先级。
我: (╯‵□′)╯︵┻━┻
正文完