每天一个知识点:调整进程优先级
一、从天而降的需求
有天,老板突然说他想要调整下服务器上进程的优先级,看看会不会有更好的性能表现?让我调研一下在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优先级。
我: (╯‵□′)╯︵┻━┻
转载自:https://juejin.cn/post/7363164003138666533