Ինչպե՞ս դադարեցնել 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» մոդուլը բացում է նոր չափումներ՝ հնարավորություն տալով մեզ ստեղծել գործընթացներ և կատարել հրամաններ առանց ջանքերի:

Յուրաքանչյուր մեթոդ ունի իր արժանիքները, որոնք հարմարեցված են ծրագրի հատուկ պահանջներին Երբ ներգրավվում են գործընթացի դադարեցման ջանքերում, անհրաժեշտ է զգուշությամբ քայլել և գնահատել հնարավոր ռիսկերը, ինչպիսիք են տվյալների կորուստը կամ համակարգի անկայունությունը: