使用Python和wxPython開(kāi)發(fā)的Windows進(jìn)程管理工具
一、背景
在日常使用 Windows 系統(tǒng)的過(guò)程中,我們經(jīng)常會(huì)遇到需要批量管理進(jìn)程的場(chǎng)景:
- 開(kāi)發(fā)場(chǎng)景:需要快速關(guān)閉所有開(kāi)發(fā)工具(IDE、數(shù)據(jù)庫(kù)、服務(wù)器等)以釋放系統(tǒng)資源
- 游戲場(chǎng)景:游戲結(jié)束后需要清理游戲客戶端及相關(guān)后臺(tái)進(jìn)程
- 辦公場(chǎng)景:下班時(shí)需要統(tǒng)一關(guān)閉辦公軟件(微信、釘釘、企業(yè)微信等)
- 性能優(yōu)化:清理占用資源的無(wú)用進(jìn)程以提升系統(tǒng)性能
Windows 自帶的任務(wù)管理器雖然功能強(qiáng)大,但在批量管理進(jìn)程方面存在明顯不足:
- 無(wú)法保存常用的進(jìn)程清理列表
- 每次都需要手動(dòng)搜索和選擇進(jìn)程
- 不支持一鍵批量關(guān)閉多個(gè)進(jìn)程
- 無(wú)法導(dǎo)出/導(dǎo)入進(jìn)程管理方案
因此,開(kāi)發(fā)一個(gè)專門的進(jìn)程批量管理工具變得十分必要。
二、目標(biāo)
本項(xiàng)目旨在開(kāi)發(fā)一個(gè)功能完善的 Windows 進(jìn)程管理工具,具備以下核心功能:
主要目標(biāo)
- 進(jìn)程列表展示:實(shí)時(shí)顯示系統(tǒng)運(yùn)行的所有進(jìn)程及其資源占用情況
- 搜索功能:快速定位目標(biāo)進(jìn)程
- 批量管理:支持將多個(gè)進(jìn)程添加到批量關(guān)閉列表
- 一鍵結(jié)束:一鍵批量結(jié)束列表中的所有進(jìn)程
- 持久化存儲(chǔ):保存批量關(guān)閉列表,下次啟動(dòng)自動(dòng)加載
- 導(dǎo)入導(dǎo)出:支持不同場(chǎng)景的進(jìn)程列表切換
技術(shù)目標(biāo)
- 使用 Python 作為開(kāi)發(fā)語(yǔ)言,保證跨平臺(tái)兼容性
- 采用 wxPython 構(gòu)建圖形界面,提供良好的用戶體驗(yàn)
- 使用 psutil 庫(kù)實(shí)現(xiàn)進(jìn)程管理功能
- 采用 JSON 格式存儲(chǔ)配置,便于人工編輯和版本控制

三、方法
3.1 技術(shù)選型
編程語(yǔ)言:Python 3.x
- 開(kāi)發(fā)效率高,代碼簡(jiǎn)潔易讀
- 擁有豐富的第三方庫(kù)生態(tài)
GUI 框架:wxPython
- 原生外觀,與 Windows 系統(tǒng)風(fēng)格一致
- 控件豐富,文檔完善
- 性能優(yōu)秀,適合桌面應(yīng)用開(kāi)發(fā)
進(jìn)程管理庫(kù):psutil
- 跨平臺(tái)的系統(tǒng)和進(jìn)程管理庫(kù)
- 提供進(jìn)程枚舉、信息獲取、終止等完整功能
- API 設(shè)計(jì)優(yōu)雅,易于使用
數(shù)據(jù)存儲(chǔ):JSON
- 人類可讀的數(shù)據(jù)格式
- Python 原生支持,無(wú)需額外依賴
- 便于手動(dòng)編輯和版本控制
3.2 系統(tǒng)架構(gòu)設(shè)計(jì)
┌─────────────────────────────────────┐
│ ProcessManagerFrame │
│ (主窗口類) │
├─────────────────────────────────────┤
│ ┌──────────────┐ ┌──────────────┐ │
│ │ 左側(cè)面板 │ │ 右側(cè)面板 │ │
│ │ │ │ │ │
│ │ - 搜索框 │ │ - 保存列表 │ │
│ │ - 進(jìn)程列表 │ │ - 管理按鈕 │ │
│ │ - 操作按鈕 │ │ - 導(dǎo)入導(dǎo)出 │ │
│ └──────────────┘ └──────────────┘ │
│ │
│ ┌─────────────────────────────┐ │
│ │ 狀態(tài)欄 │ │
│ └─────────────────────────────┘ │
└─────────────────────────────────────┘
│
├─→ psutil (進(jìn)程管理)
├─→ JSON (數(shù)據(jù)持久化)
└─→ wxPython (界面渲染)
3.3 核心模塊設(shè)計(jì)
- 進(jìn)程信息采集模塊:使用 psutil 獲取進(jìn)程信息
- 界面展示模塊:使用 wxPython 構(gòu)建雙面板界面
- 搜索過(guò)濾模塊:實(shí)現(xiàn)進(jìn)程名稱的模糊搜索
- 批量管理模塊:管理待關(guān)閉進(jìn)程列表
- 持久化模塊:JSON 文件的讀寫操作
- 進(jìn)程終止模塊:批量結(jié)束進(jìn)程的執(zhí)行邏輯
四、過(guò)程
4.1 類結(jié)構(gòu)分析
整個(gè)程序圍繞 ProcessManagerFrame 類展開(kāi),這是一個(gè)繼承自 wx.Frame 的主窗口類:
class ProcessManagerFrame(wx.Frame):
def __init__(self):
super().__init__(parent=None, title='Windows 進(jìn)程管理器', size=(1000, 600))
核心屬性:
self.config_file: 配置文件路徑self.saved_processes: 保存的進(jìn)程字典 {進(jìn)程名: 添加時(shí)間}self.all_processes: 所有進(jìn)程的列表,用于搜索功能self.process_list: 左側(cè)進(jìn)程列表控件self.saved_list: 右側(cè)保存列表控件
4.2 界面構(gòu)建詳解
4.2.1 整體布局
程序采用分割窗口(SplitterWindow)實(shí)現(xiàn)左右分欄布局:
splitter = wx.SplitterWindow(panel) splitter.SplitVertically(left_panel, right_panel) splitter.SetSashPosition(600) # 設(shè)置分割位置
這種設(shè)計(jì)的優(yōu)勢(shì):
- 用戶可以拖動(dòng)分割條調(diào)整兩側(cè)寬度
- 左右功能區(qū)域明確,符合用戶使用習(xí)慣
- 充分利用屏幕空間
4.2.2 左側(cè)面板 - 進(jìn)程監(jiān)控區(qū)
搜索框設(shè)計(jì):
search_sizer = wx.BoxSizer(wx.HORIZONTAL) self.search_box = wx.TextCtrl(left_panel, style=wx.TE_PROCESS_ENTER) self.search_btn = wx.Button(left_panel, label='搜索', size=(60, -1)) self.clear_search_btn = wx.Button(left_panel, label='清除', size=(60, -1))
關(guān)鍵點(diǎn):
wx.TE_PROCESS_ENTER樣式允許按回車觸發(fā)搜索- 提供"搜索"和"清除"兩個(gè)按鈕,操作便捷
進(jìn)程列表控件:
self.process_list = wx.ListCtrl(left_panel, style=wx.LC_REPORT | wx.LC_SINGLE_SEL) self.process_list.InsertColumn(0, 'PID', width=80) self.process_list.InsertColumn(1, '進(jìn)程名稱', width=200) self.process_list.InsertColumn(2, '內(nèi)存(MB)', width=100) self.process_list.InsertColumn(3, 'CPU%', width=80)
設(shè)計(jì)考量:
wx.LC_REPORT風(fēng)格顯示詳細(xì)列表wx.LC_SINGLE_SEL限制單選,避免誤操作- 顯示 PID、名稱、內(nèi)存、CPU 四個(gè)關(guān)鍵信息
- 列寬度根據(jù)內(nèi)容類型優(yōu)化
4.2.3 右側(cè)面板 - 批量管理區(qū)
保存列表控件:
self.saved_list = wx.ListCtrl(right_panel, style=wx.LC_REPORT | wx.LC_SINGLE_SEL) self.saved_list.InsertColumn(0, '進(jìn)程名稱', width=200) self.saved_list.InsertColumn(1, '添加時(shí)間', width=150)
按鈕分組設(shè)計(jì):
# 第一行:核心操作 right_btn_sizer1 = wx.BoxSizer(wx.HORIZONTAL) self.kill_all_btn = wx.Button(right_panel, label='一鍵批量結(jié)束', size=(120, 35)) self.kill_all_btn.SetBackgroundColour(wx.Colour(220, 53, 69)) # 紅色警示 self.kill_all_btn.SetForegroundColour(wx.Colour(255, 255, 255)) # 第二行:輔助功能 right_btn_sizer2 = wx.BoxSizer(wx.HORIZONTAL) self.export_list_btn = wx.Button(right_panel, label='導(dǎo)出列表') self.import_list_btn = wx.Button(right_panel, label='導(dǎo)入列表')
UI/UX 設(shè)計(jì)亮點(diǎn):
- 危險(xiǎn)操作(批量結(jié)束)使用紅色突出顯示
- 按鈕分兩行排列,避免界面擁擠
- 功能分組清晰:核心操作 vs 輔助功能
4.3 核心功能實(shí)現(xiàn)
4.3.1 進(jìn)程信息采集
def load_processes(self, filter_text=''):
"""加載當(dāng)前運(yùn)行的進(jìn)程"""
self.process_list.DeleteAllItems()
self.status_text.SetLabel('正在加載進(jìn)程列表...')
try:
processes = []
for proc in psutil.process_iter(['pid', 'name', 'memory_info', 'cpu_percent']):
try:
info = proc.info
processes.append({
'pid': info['pid'],
'name': info['name'],
'memory': info['memory_info'].rss / 1024 / 1024 if info['memory_info'] else 0,
'cpu': info['cpu_percent'] or 0
})
except (psutil.NoSuchProcess, psutil.AccessDenied):
continue
技術(shù)細(xì)節(jié)分析:
進(jìn)程迭代優(yōu)化:
psutil.process_iter(['pid', 'name', 'memory_info', 'cpu_percent'])只獲取需要的屬性,提高性能- 避免訪問(wèn)不需要的進(jìn)程信息
異常處理:
psutil.NoSuchProcess:進(jìn)程在迭代過(guò)程中結(jié)束psutil.AccessDenied:無(wú)權(quán)限訪問(wèn)的系統(tǒng)進(jìn)程- 這兩種異常需要靜默處理,不影響其他進(jìn)程的加載
內(nèi)存單位轉(zhuǎn)換:
'memory': info['memory_info'].rss / 1024 / 1024
rss(Resident Set Size) 是進(jìn)程實(shí)際占用的物理內(nèi)存- 從字節(jié)轉(zhuǎn)換為 MB,便于用戶理解
4.3.2 搜索過(guò)濾功能
# 保存所有進(jìn)程用于搜索
self.all_processes = processes
# 過(guò)濾進(jìn)程
if filter_text:
filter_text = filter_text.lower()
processes = [p for p in processes if filter_text in p['name'].lower()]
# 按內(nèi)存使用排序
processes.sort(key=lambda x: x['memory'], reverse=True)
實(shí)現(xiàn)要點(diǎn):
雙列表設(shè)計(jì):
all_processes保存完整進(jìn)程列表processes是過(guò)濾后的顯示列表- 支持清除搜索后恢復(fù)完整列表
不區(qū)分大小寫搜索:
- 統(tǒng)一轉(zhuǎn)換為小寫進(jìn)行匹配
- 提升用戶體驗(yàn),不需要精確輸入
部分匹配算法:
- 使用
in操作符實(shí)現(xiàn)子串匹配 - 例如搜索 “chrome” 可以匹配 “chrome.exe”、“chromedriver.exe”
智能排序:
- 按內(nèi)存使用量降序排列
- 幫助用戶快速找到占用資源最多的進(jìn)程
4.3.3 批量添加功能
def on_batch_add(self, event):
"""批量添加當(dāng)前顯示的搜索結(jié)果"""
if self.process_list.GetItemCount() == 0:
wx.MessageBox('當(dāng)前沒(méi)有可添加的進(jìn)程', '提示', wx.OK | wx.ICON_INFORMATION)
return
search_text = self.search_box.GetValue().strip()
if not search_text:
wx.MessageBox('請(qǐng)先搜索進(jìn)程,然后使用此功能批量添加搜索結(jié)果', '提示', wx.OK | wx.ICON_INFORMATION)
return
# 獲取當(dāng)前顯示的所有進(jìn)程名稱
process_names = set()
for i in range(self.process_list.GetItemCount()):
process_name = self.process_list.GetItemText(i, 1)
process_names.add(process_name)
設(shè)計(jì)思路:
前置檢查:
- 驗(yàn)證是否有可添加的進(jìn)程
- 驗(yàn)證用戶是否執(zhí)行了搜索操作
- 避免誤操作和空操作
使用 set 去重:
process_names = set()
- 自動(dòng)去除重復(fù)的進(jìn)程名
- 例如多個(gè) chrome.exe 實(shí)例只添加一次
確認(rèn)對(duì)話框:
msg = f'確定要將以下 {len(process_names)} 個(gè)搜索結(jié)果添加到批量關(guān)閉列表嗎?\n\n'
msg += '\n'.join(sorted(process_names))
dlg = wx.MessageDialog(self, msg, '確認(rèn)批量添加', wx.YES_NO | wx.ICON_QUESTION)
- 顯示將要添加的進(jìn)程列表
- 給用戶最后的確認(rèn)機(jī)會(huì)
- 防止誤操作
時(shí)間戳記錄:
current_time = datetime.now().strftime('%Y-%m-%d %H:%M:%S')
for process_name in process_names:
if process_name not in self.saved_processes:
self.saved_processes[process_name] = current_time
added_count += 1
- 記錄每個(gè)進(jìn)程的添加時(shí)間
- 便于追蹤和管理
4.3.4 一鍵批量結(jié)束
def on_kill_all(self, event):
"""一鍵批量結(jié)束進(jìn)程"""
if not self.saved_processes:
wx.MessageBox('批量關(guān)閉列表為空', '提示', wx.OK | wx.ICON_INFORMATION)
return
process_names = list(self.saved_processes.keys())
msg = f'確定要結(jié)束以下 {len(process_names)} 個(gè)進(jìn)程嗎?\n\n' + '\n'.join(process_names)
dlg = wx.MessageDialog(self, msg, '確認(rèn)批量結(jié)束進(jìn)程', wx.YES_NO | wx.ICON_WARNING)
if dlg.ShowModal() == wx.ID_YES:
killed_count = 0
failed_list = []
for process_name in process_names:
try:
for proc in psutil.process_iter(['name']):
if proc.info['name'] == process_name:
try:
proc.terminate()
killed_count += 1
except (psutil.NoSuchProcess, psutil.AccessDenied) as e:
failed_list.append(f"{process_name}: {str(e)}")
except Exception as e:
failed_list.append(f"{process_name}: {str(e)}")
實(shí)現(xiàn)細(xì)節(jié)剖析:
雙重確認(rèn)機(jī)制:
- 第一重:檢查列表是否為空
- 第二重:顯示警告對(duì)話框,用戶需點(diǎn)擊"是"才執(zhí)行
- 最大程度防止誤操作
進(jìn)程終止策略:
proc.terminate() # 發(fā)送 SIGTERM 信號(hào)
- 使用
terminate()而非kill() - 允許進(jìn)程優(yōu)雅退出,保存數(shù)據(jù)
- 如果需要強(qiáng)制終止,可以改用
kill()
按名稱匹配進(jìn)程:
- 不依賴 PID,因?yàn)?PID 會(huì)變化
- 按進(jìn)程名匹配,可以終止所有同名實(shí)例
- 例如關(guān)閉所有 chrome.exe 進(jìn)程
詳細(xì)的結(jié)果反饋:
result_msg = f'成功結(jié)束 {killed_count} 個(gè)進(jìn)程'
if failed_list:
result_msg += f'\n\n失敗 {len(failed_list)} 個(gè):\n' + '\n'.join(failed_list)
- 統(tǒng)計(jì)成功和失敗的數(shù)量
- 列出失敗的原因(權(quán)限不足、進(jìn)程不存在等)
- 幫助用戶了解操作結(jié)果
自動(dòng)刷新:
self.load_processes() # 刷新進(jìn)程列表
- 操作完成后自動(dòng)刷新列表
- 讓用戶直觀看到效果
4.3.5 數(shù)據(jù)持久化
加載配置文件:
def load_saved_processes(self):
"""從文件加載保存的進(jìn)程列表"""
if os.path.exists(self.config_file):
try:
with open(self.config_file, 'r', encoding='utf-8') as f:
content = f.read().strip()
if not content: # 文件為空
return {}
return json.loads(content)
except json.JSONDecodeError as e:
print(f'配置文件格式錯(cuò)誤: {e}')
# 備份損壞的文件
if os.path.exists(self.config_file):
backup_file = f"{self.config_file}.backup_{datetime.now().strftime('%Y%m%d_%H%M%S')}"
os.rename(self.config_file, backup_file)
print(f'已備份損壞的配置文件到: {backup_file}')
return {}
健壯性設(shè)計(jì):
空文件處理:
content = f.read().strip()
if not content:
return {}
- 避免解析空文件導(dǎo)致的 JSON 錯(cuò)誤
自動(dòng)備份機(jī)制:
- 檢測(cè)到配置文件損壞時(shí)自動(dòng)備份
- 備份文件名包含時(shí)間戳,避免覆蓋
- 不影響程序正常啟動(dòng)
多層異常處理:
json.JSONDecodeError:JSON 格式錯(cuò)誤- 通用
Exception:其他未預(yù)料的錯(cuò)誤 - 確保程序不會(huì)因配置文件問(wèn)題崩潰
保存配置文件:
def save_saved_processes(self):
"""保存進(jìn)程列表到文件"""
try:
with open(self.config_file, 'w', encoding='utf-8') as f:
json.dump(self.saved_processes, f, ensure_ascii=False, indent=2)
except Exception as e:
wx.MessageBox(f'保存配置文件失敗: {str(e)}', '錯(cuò)誤', wx.OK | wx.ICON_ERROR)
格式化選項(xiàng):
ensure_ascii=False:支持中文等 Unicode 字符indent=2:美化輸出,便于人工查看和編輯
4.3.6 導(dǎo)入導(dǎo)出功能
導(dǎo)出實(shí)現(xiàn):
def on_export_list(self, event):
"""導(dǎo)出批量關(guān)閉列表"""
if not self.saved_processes:
wx.MessageBox('批量關(guān)閉列表為空,無(wú)法導(dǎo)出', '提示', wx.OK | wx.ICON_INFORMATION)
return
wildcard = "JSON文件 (*.json)|*.json|所有文件 (*.*)|*.*"
dlg = wx.FileDialog(self, "導(dǎo)出批量關(guān)閉列表",
defaultFile=f"process_list_{datetime.now().strftime('%Y%m%d_%H%M%S')}.json",
wildcard=wildcard,
style=wx.FD_SAVE | wx.FD_OVERWRITE_PROMPT)
特色功能:
- 自動(dòng)生成帶時(shí)間戳的文件名
- 文件類型過(guò)濾器,引導(dǎo)用戶選擇 JSON 格式
wx.FD_OVERWRITE_PROMPT覆蓋提示,防止誤操作
導(dǎo)入實(shí)現(xiàn):
def on_import_list(self, event):
"""導(dǎo)入批量關(guān)閉列表"""
# ... 文件選擇對(duì)話框 ...
# 詢問(wèn)是否覆蓋還是合并
if self.saved_processes:
merge_dlg = wx.MessageDialog(self,
'當(dāng)前列表不為空\(chéng)n\n點(diǎn)擊"是"合并導(dǎo)入\n點(diǎn)擊"否"覆蓋當(dāng)前列表\n點(diǎn)擊"取消"放棄導(dǎo)入',
'導(dǎo)入選項(xiàng)',
wx.YES_NO | wx.CANCEL | wx.ICON_QUESTION)
result = merge_dlg.ShowModal()
if result == wx.ID_YES:
# 合并邏輯
for key, value in imported_data.items():
if key not in self.saved_processes:
self.saved_processes[key] = value
added_count += 1
elif result == wx.ID_NO:
# 覆蓋邏輯
self.saved_processes = imported_data
智能導(dǎo)入策略:
- 三種選擇:合并、覆蓋、取消
- 合并模式:只添加新進(jìn)程,保留現(xiàn)有進(jìn)程
- 覆蓋模式:完全替換當(dāng)前列表
- 詳細(xì)反饋:顯示新增、已存在的進(jìn)程數(shù)量
4.4 事件綁定機(jī)制
wxPython 使用事件驅(qū)動(dòng)模型,所有用戶交互都通過(guò)事件處理:
# 按鈕點(diǎn)擊事件 self.refresh_btn.Bind(wx.EVT_BUTTON, self.on_refresh) self.add_to_list_btn.Bind(wx.EVT_BUTTON, self.on_add_to_list) self.batch_add_btn.Bind(wx.EVT_BUTTON, self.on_batch_add) # 文本框回車事件 self.search_box.Bind(wx.EVT_TEXT_ENTER, self.on_search) # 導(dǎo)入導(dǎo)出事件 self.export_list_btn.Bind(wx.EVT_BUTTON, self.on_export_list) self.import_list_btn.Bind(wx.EVT_BUTTON, self.on_import_list)
事件處理函數(shù)命名規(guī)范:
on_前綴:表示這是一個(gè)事件處理函數(shù)- 動(dòng)詞描述:清晰表達(dá)函數(shù)功能
- 例如:
on_refresh、on_search、on_kill_all
五、結(jié)果
5.1 功能展示
經(jīng)過(guò)完整開(kāi)發(fā),程序?qū)崿F(xiàn)了以下功能模塊:
基礎(chǔ)功能
進(jìn)程列表展示
- 顯示 PID、進(jìn)程名、內(nèi)存占用、CPU 使用率
- 按內(nèi)存使用量降序排序
- 實(shí)時(shí)刷新進(jìn)程信息
進(jìn)程搜索
- 支持進(jìn)程名模糊搜索
- 不區(qū)分大小寫
- 顯示匹配進(jìn)程數(shù)量
單個(gè)添加
- 從進(jìn)程列表選中單個(gè)進(jìn)程
- 添加到批量關(guān)閉列表
- 記錄添加時(shí)間
高級(jí)功能
批量添加
- 將搜索結(jié)果一次性全部添加
- 自動(dòng)去重
- 顯示添加統(tǒng)計(jì)
一鍵批量結(jié)束
- 批量終止列表中的所有進(jìn)程
- 雙重確認(rèn)機(jī)制
- 詳細(xì)的執(zhí)行結(jié)果反饋
列表管理
- 從列表移除單個(gè)進(jìn)程
- 清空整個(gè)列表
- 持久化存儲(chǔ)
導(dǎo)入導(dǎo)出
- 導(dǎo)出為 JSON 文件
- 從文件導(dǎo)入(支持合并/覆蓋)
- 支持多場(chǎng)景切換
5.2 技術(shù)指標(biāo)
| 指標(biāo) | 數(shù)值/描述 |
|---|---|
| 代碼行數(shù) | 約 500 行 |
| 啟動(dòng)速度 | < 2 秒 |
| 內(nèi)存占用 | 約 30-50 MB |
| 進(jìn)程刷新速度 | < 1 秒 (數(shù)百個(gè)進(jìn)程) |
| 支持系統(tǒng) | Windows 7/8/10/11 |
| Python 版本 | Python 3.6+ |
5.3 用戶體驗(yàn)優(yōu)化
視覺(jué)反饋
- 危險(xiǎn)操作使用紅色按鈕
- 狀態(tài)欄實(shí)時(shí)顯示操作結(jié)果
- 對(duì)話框提供詳細(xì)信息
操作便捷性
- 支持回車快捷鍵搜索
- 分割窗口可調(diào)整大小
- 一鍵操作減少點(diǎn)擊次數(shù)
容錯(cuò)機(jī)制
- 多層異常處理
- 配置文件損壞自動(dòng)備份
- 操作前二次確認(rèn)
數(shù)據(jù)安全
- 自動(dòng)保存配置
- 導(dǎo)出備份功能
- 合并導(dǎo)入避免數(shù)據(jù)丟失
5.4 實(shí)際應(yīng)用案例
案例1:開(kāi)發(fā)環(huán)境清理
{
"Code.exe": "2025-01-10 10:30:00",
"mysql.exe": "2025-01-10 10:30:05",
"node.exe": "2025-01-10 10:30:10",
"python.exe": "2025-01-10 10:30:15"
}
一鍵關(guān)閉所有開(kāi)發(fā)工具,釋放 4GB+ 內(nèi)存。
案例2:辦公軟件批量管理
{
"WeChat.exe": "2025-01-10 18:00:00",
"DingTalk.exe": "2025-01-10 18:00:00",
"WXWork.exe": "2025-01-10 18:00:00"
}
下班一鍵清理,避免消息打擾。
案例3:游戲優(yōu)化
{
"steam.exe": "2025-01-10 22:00:00",
"steamwebhelper.exe": "2025-01-10 22:00:00",
"gameoverlayui.exe": "2025-01-10 22:00:00"
}
游戲結(jié)束后清理后臺(tái)進(jìn)程,避免占用資源。
以上就是使用Python和wxPython開(kāi)發(fā)的Windows進(jìn)程管理工具的詳細(xì)內(nèi)容,更多關(guān)于Python Windows進(jìn)程管理工具的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
python3利用tcp實(shí)現(xiàn)文件夾遠(yuǎn)程傳輸
這篇文章主要為大家詳細(xì)介紹了python3利用tcp實(shí)現(xiàn)文件夾遠(yuǎn)程傳輸,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-07-07
Python list和str互轉(zhuǎn)的實(shí)現(xiàn)示例
這篇文章主要介紹了Python list和str互轉(zhuǎn)的實(shí)現(xiàn)示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-11-11
Python使用ffmpeg實(shí)現(xiàn)將WebM文件轉(zhuǎn)換為MP4文件
這篇文章主要介紹了Python如何使用wxPython庫(kù)創(chuàng)建一個(gè)簡(jiǎn)單的GUI應(yīng)用程序,可以實(shí)現(xiàn)將WebM文件轉(zhuǎn)換為MP4文件,文中的示例代碼講解詳細(xì),感興趣的可以動(dòng)手嘗試一下2023-08-08
Python使用Playwright實(shí)現(xiàn)更快更現(xiàn)代的瀏覽器自動(dòng)化實(shí)戰(zhàn)指南
十年前,Selenium是瀏覽器自動(dòng)化的絕對(duì)王者,Playwright的出現(xiàn)徹底改變了游戲規(guī)則,這個(gè)由微軟開(kāi)發(fā)的工具,專為現(xiàn)代Web打造,用更簡(jiǎn)潔的API實(shí)現(xiàn)更快的執(zhí)行速度,下面小編就和大家簡(jiǎn)單講講它的具體使用吧2025-12-12
Python3.5.3下配置opencv3.2.0的操作方法
下面小編就為大家分享一篇Python3.5.3下配置opencv3.2.0的操作方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-04-04
python?time模塊定時(shí)器由淺入深應(yīng)用實(shí)例
Python提供了多種實(shí)現(xiàn)定時(shí)任務(wù)的方法,從簡(jiǎn)單到復(fù)雜,包括使用標(biāo)準(zhǔn)庫(kù)time模塊的基礎(chǔ)定時(shí),threading或asyncio模塊的多線程/異步定時(shí),以及第三方庫(kù)如APScheduler的高級(jí)定時(shí)任務(wù)調(diào)度2024-01-01

