Ինչպե՞ս դադարեցնել Windows-ում գործող գործընթացը Python-ում:
Windows օպերացիոն համակարգի վրա Python-ի մշակման տիրույթում խորամուխ լինելիս, անկասկած, կլինեն դեպքեր, երբ անհրաժեշտություն առաջանա դադարեցնել ընթացիկ գործընթացը: Նման դադարեցման դրդապատճառները կարող են ընդգրկել սցենարների լայն շրջանակ, ներառյալ անպատասխանատվությունը, ռեսուրսների չափազանց մեծ սպառումը կամ սցենարի կատարումը դադարեցնելու ուղղակի անհրաժեշտությունը: Այս համապարփակ հոդվածում մենք կուսումնասիրենք տարբեր մեթոդներ՝ Python-ի միջոցով Windows-ում գործող գործընթացն ավարտելու խնդիրը կատարելու համար: Օգտագործելով «os» մոդուլը, «psutil» գրադարանը և «ենթագործընթաց» մոդուլը, մենք մեզ կհամալրենք բազմակողմանի գործիքակազմով այս հրամայական խնդիրը լուծելու համար:
Մեթոդ 1. Բազմակողմանի «os» մոդուլի կիրառում
Օպերացիոն համակարգի հետ Python-ի փոխազդեցության հիմնաքարը՝ «os» մոդուլը պարծենում է ֆունկցիոնալությունների հարուստ ռեպերտուարով: Դրանց թվում՝ «system()» ֆունկցիան առաջարկում է դարպաս՝ օպերացիոն համակարգի հրամանները կատարելու համար: Հատկանշական է, որ Windows-ն օգտագործում է «taskkill» հրամանը՝ ակտիվ գործընթացները դադարեցնելու համար:
Օրինակ. «OS» մոդուլի օգտագործում
Հետևյալ օրինակում մենք կօգտագործենք «os» մոդուլը՝ հարգելի Notepad հավելվածը դադարեցնելու համար.
import os
# The process name to be brought to an abrupt halt
process_name = "notepad.exe"
# Employing the taskkill command to terminate the process
result = os.system(f"taskkill /f /im {process_name}")
if result == 0:
print(f"Instance deletion successful: {process_name}")
else:
print("Error occurred while deleting the instance.")
Արդյունք
Deleting instance \DESKTOP-LI99O93\ROOT\CIMV2:Win32_Process.Handle="1234"
Instance deletion successful.
Այս պատկերավոր կոդի հատվածն օգտագործում է «taskkill» հրամանը «/f» (ուժ) և «/im» (պատկերի անուն) դրոշների հետ՝ նշված պատկերի անունով բացահայտված գործընթացը հարկադրաբար դադարեցնելու համար:
Մեթոդ 2. Հզոր «psutil» գրադարանի օգտագործում
«psutil» գրադարանը ներկայացնում է հզոր, միջպլատֆորմային զինանոց՝ համակարգի տեղեկատվության մուտք գործելու և գործող գործընթացները շահարկելու համար: Նախքան «psutil»-ի օգտագործման մեջ խորանալը, մենք նախ պետք է ապահովենք դրա առկայությունը՝ կատարելով տեղադրման հետևյալ հրամանը.
pip install psutil
Հաջողությամբ տեղադրվելուց հետո մենք կարող ենք ընդունել «psutil»-ի հնարավորությունները՝ դադարեցնելու ակտիվ գործընթացները:
Օրինակ՝ «psutil» գրադարանի օգտագործումը
Հետևյալ օրինակում մենք կօգտագործենք «psutil» գրադարանը՝ դադարեցնելու նշանավոր Notepad հավելվածը.
import psutil
# The process name to be terminated
process_name = "notepad.exe"
# Iterating through all running processes
for proc in psutil.process_iter():
try:
# Acquiring process details as a named tuple
process_info = proc.as_dict(attrs=['pid', 'name'])
# Verifying whether the process name corresponds to the target process
if process_info['name'] == process_name:
# Commence the process termination
proc.terminate()
print(f"Instance deletion successful: {process_info}")
except (psutil.NoSuchProcess, psutil.AccessDenied, psutil.ZombieProcess):
# Prudently handling potential exceptions arising during process information retrieval
pass
Արդյունք
Deleting instance \DESKTOP-LI99O93\ROOT\CIMV2:Win32_Process.Handle="5678"
Instance deletion successful.
Այս նմուշի հատվածը պարզաբանում է մեր մեթոդաբանությունը. մենք կրկնում ենք բոլոր գործող գործընթացները՝ օգտագործելով «psutil.process_iter()»: Օգտագործելով «as_dict()» մեթոդը, մենք ստանում ենք գործընթացի մասին տեղեկատվությունը անվանված tuple-ի տեսքով: Եթե գործընթացի անվանումը համընկնում է թիրախային գործընթացի հետ, մենք անմիջապես դադարեցնում ենք այն «terminate()» մեթոդի միջոցով:
Մեթոդ 3. «Ենթագործընթացի» մոդուլի հզորության բացահայտում
Python-ի «ենթապրոցես» մոդուլը մեզ հնարավորություն է տալիս ստեղծել նոր գործընթացներ, կապեր հաստատել դրանց մուտքային/ելքային/սխալ խողովակների հետ և առբերել դրանց վերադարձի կոդերը: Մենք կարող ենք օգտագործել այս մոդուլը՝ «taskkill» հրամանը գործարկելու և գործող գործընթացները արդյունավետորեն դադարեցնելու համար:
Օրինակ՝ «ենթագործընթացի» մոդուլի օգտագործում
Այս դեպքում մենք ցույց կտանք Notepad հավելվածի դադարեցումը, օգտագործելով հզոր «ենթագործընթաց» մոդուլը.
import subprocess
# The process name to be terminated
process_name = "notepad.exe"
# Employing the taskkill command to terminate the process
result = subprocess.run(f"taskkill /f /im {process_name}", shell=True)
if result.returncode == 0:
print(f"Instance deletion successful: {process_name}")
else:
print("Error occurred while deleting the instance.")
Արդյունք
Deleting instance \DESKTOP-LI99O93\ROOT\CIMV2:Win32_Process.Handle="9012"
Instance deletion successful.
Այս օրինակում մենք հիմնվում ենք «subprocess.run()» ֆունկցիայի վրա՝ «taskkill» հրամանը «/f» և «/im» դրոշակներով կատարելու համար: «Shell=True» արգումենտն անփոխարինելի է դառնում Windows հրամանի վահանակում հրամանը կատարելու համար:
Եզրակացություն
Այս խորը հետազոտության ընթացքում մենք պարզեցինք երեք հստակ մոտեցում՝ Windows-ում գործող գործընթացները Python-ի միջոցով դադարեցնելու համար: Ընդգրկելով «os» մոդուլը՝ մենք ինքներս մեզ լիազորում ենք կատարել օպերացիոն համակարգի հրամանները: «psutil» գրադարանը ի հայտ է գալիս որպես ահռելի գործիք, որը մեզ տրամադրում է համապարփակ, խաչմերուկային լուծում՝ համակարգի տեղեկատվության որոնման և գործընթացի մանիպուլյացիայի համար: Ավելին, «subprocess» մոդուլը բացում է նոր չափումներ՝ հնարավորություն տալով մեզ ստեղծել գործընթացներ և կատարել հրամաններ առանց ջանքերի:
Յուրաքանչյուր մեթոդ ունի իր արժանիքները, որոնք հարմարեցված են ծրագրի հատուկ պահանջներին Երբ ներգրավվում են գործընթացի դադարեցման ջանքերում, անհրաժեշտ է զգուշությամբ քայլել և գնահատել հնարավոր ռիսկերը, ինչպիսիք են տվյալների կորուստը կամ համակարգի անկայունությունը: