Hướng dẫn how to access task manager using python - cách truy cập trình quản lý tác vụ bằng python

& nbsp; · 8 phút Đọc · Cập nhật tháng 6 năm 2022 · Hướng dẫn chung của Python · 8 min read · Updated jun 2022 · General Python Tutorials

Tiết lộ: Bài đăng này có thể chứa các liên kết liên kết, có nghĩa là khi bạn nhấp vào liên kết và mua hàng, chúng tôi nhận được hoa hồng.: This post may contain affiliate links, meaning when you click the links and make a purchase, we receive a commission.

Giám sát các quy trình hệ điều hành cho phép chúng tôi giám sát và hiển thị hoạt động quy trình trong thời gian thực. Trong hướng dẫn này, bạn sẽ tìm hiểu cách truy xuất thông tin về các quy trình chạy trong hệ điều hành bằng Python và xây dựng một trình quản lý tác vụ xung quanh nó!n this tutorial, you will learn how to retrieve information on running processes in the operating system using Python, and build a task manager around it!

Bây giờ bạn có thể nghĩ về việc tạo ra một cái gì đó như thế này:

Hướng dẫn how to access task manager using python - cách truy cập trình quản lý tác vụ bằng python

Chà, không chính xác, chúng ta sẽ tạo một phiên bản dòng lệnh này, đầu ra tập lệnh cuối cùng sẽ là thế này:

Hướng dẫn how to access task manager using python - cách truy cập trình quản lý tác vụ bằng python

Tuy nhiên, nếu bạn là một lập trình viên GUI, bạn có thể làm cho điều này tốt hơn rất nhiều với thiết kế của riêng bạn và cạnh tranh với Windows Task Manager!

Liên quan: & nbsp; Cách xử lý các tệp trong Python bằng mô -đun HĐH.How to Handle Files in Python using OS Module.

Được rồi, bây giờ chúng ta hãy xây dựng cái này. Đầu tiên, hãy cài đặt các phụ thuộc:

pip3 install psutil pandas

Mở tệp Python mới và nhập các mô -đun cần thiết:

import psutil
from datetime import datetime
import pandas as pd
import time
import os

Chúng tôi sẽ sử dụng

import psutil
from datetime import datetime
import pandas as pd
import time
import os
9 vì đây là thư viện đa nền tảng để truy xuất thông tin quy trình chạy trong Python.

Lý do mà chúng ta cần

def get_processes_info():
    # the list the contain all process dictionaries
    processes = []
0 ở đây là sau khi truy xuất thông tin quy trình, chúng ta sẽ cần phải sắp xếp theo các cột và in theo cách bảng.

Bây giờ, chúng ta cần một cách để truy xuất tất cả các quy trình trong một vòng lặp. May mắn cho chúng tôi, có chức năng

def get_processes_info():
    # the list the contain all process dictionaries
    processes = []
1 trả về một trình tạo mang lại một thể hiện quy trình cho tất cả các quy trình đang chạy trong hệ điều hành.

Chúng ta hãy xây dựng chức năng cốt lõi trả về tất cả thông tin quy trình, chúng ta sẽ lưu trữ tất cả các quy trình trong danh sách từ điển, do đó có thể dễ dàng chuyển đổi nó thành DataFrame:e gonna store all the processes in a list of dictionaries, so it can be easy later on to convert it to a dataframe:

def get_processes_info():
    # the list the contain all process dictionaries
    processes = []

Hãy bắt đầu vòng lặp và lặp lại trên máy phát:

    for process in psutil.process_iter():
        # get all process info in one shot
        with process.oneshot():
            # get the process id
            pid = process.pid
            if pid == 0:
                # System Idle Process for Windows NT, useless to see anyways
                continue

Như bạn có thể nhận thấy, tôi đã loại bỏ PID của 0, đó là quy trình không tải hệ thống dành cho Windows NT, dù sao nó cũng không có thông tin hữu ích.

def get_processes_info():
    # the list the contain all process dictionaries
    processes = []
2 giúp chúng tôi truy xuất thông tin quy trình một cách hiệu quả (cách nhanh hơn), chúng tôi đã có PID, hãy lấy tên quy trình:

            # get the name of the file executed
            name = process.name()

Lấy thời gian khi quá trình được tạo vào

def get_processes_info():
    # the list the contain all process dictionaries
    processes = []
3, do đó, chúng tôi sẽ chuyển đổi sang đối tượng DateTime Python thích hợp:datetime object:

            # get the time the process was spawned
            try:
                create_time = datetime.fromtimestamp(process.create_time())
            except OSError:
                # system processes, using boot time instead
                create_time = datetime.fromtimestamp(psutil.boot_time())

Chúng ta hãy sử dụng quy trình sử dụng CPU cũng như số lượng lõi có thể thực hiện quá trình này:

            try:
                # get the number of CPU cores that can execute this process
                cores = len(process.cpu_affinity())
            except psutil.AccessDenied:
                cores = 0
            # get the CPU usage percentage
            cpu_usage = process.cpu_percent()

Lưu ý: Phương thức

def get_processes_info():
    # the list the contain all process dictionaries
    processes = []
4 chỉ hoạt động cho Linux, Windows và FreeBSD, vì vậy nếu bạn đang sử dụng một HĐH khác như MacOS, bạn nên nhận xét mã trên.
def get_processes_info():
    # the list the contain all process dictionaries
    processes = []
4 method only works for Linux, Windows, and FreeBSD, so if you're using another OS such as MacOS, you should comment the above code.

Lý do tôi kết thúc

def get_processes_info():
    # the list the contain all process dictionaries
    processes = []
5 trong một thử/ngoại trừ khối là đôi khi nó sẽ tăng
def get_processes_info():
    # the list the contain all process dictionaries
    processes = []
6 cho các quy trình hệ thống (đảm bảo bạn chạy Python với tư cách là quản trị viên).

Phương pháp

def get_processes_info():
    # the list the contain all process dictionaries
    processes = []
7 trả về một phao đại diện cho quá trình sử dụng CPU hiện tại theo tỷ lệ phần trăm. Nó so sánh thời gian xử lý với thời gian CPU hệ thống đã trôi qua kể từ lần gọi cuối cùng, quay lại ngay lập tức. Điều đó có nghĩa là lần đầu tiên điều này được gọi là nó sẽ trả lại 0,0.0.0.

Nhận được trạng thái của quá trình, cho dù nó đang chạy, ngủ, vv:

            # get the status of the process (running, idle, etc.)
            status = process.status()

Quá trình ưu tiên:

            try:
                # get the process priority (a lower value means a more prioritized process)
                nice = int(process.nice())
            except psutil.AccessDenied:
                nice = 0

Sử dụng bộ nhớ:

            try:
                # get the memory usage in bytes
                memory_usage = process.memory_full_info().uss
            except psutil.AccessDenied:
                memory_usage = 0

Tổng số byte được viết và đọc theo quy trình này:

import psutil
from datetime import datetime
import pandas as pd
import time
import os
0

Tổng số chủ đề sinh ra:

import psutil
from datetime import datetime
import pandas as pd
import time
import os
1

Cuối cùng, người dùng đã sinh ra quá trình đó:

import psutil
from datetime import datetime
import pandas as pd
import time
import os
2

Hãy thêm tất cả thông tin này vào danh sách của chúng tôi và thoát khỏi vòng lặp và trả lại:

import psutil
from datetime import datetime
import pandas as pd
import time
import os
3

Lưu ý rằng không có thông tin sử dụng mạng về từng quy trình, đó là vì

import psutil
from datetime import datetime
import pandas as pd
import time
import os
9 không cung cấp thông tin này. Nếu bạn muốn có được nó, thì hãy kiểm tra hướng dẫn này để sử dụng mạng trên mỗi quy trình bằng cách kết hợp các thư viện scacco và
import psutil
from datetime import datetime
import pandas as pd
import time
import os
9.

Như đã đề cập trước đó, chúng tôi sẽ chuyển đổi danh sách các quy trình thành

    for process in psutil.process_iter():
        # get all process info in one shot
        with process.oneshot():
            # get the process id
            pid = process.pid
            if pid == 0:
                # System Idle Process for Windows NT, useless to see anyways
                continue
0, do đó, chức năng sau đây lấy danh sách các quy trình trước đó và chuyển đổi nó thành DataFrame:nna convert the processes list into a
    for process in psutil.process_iter():
        # get all process info in one shot
        with process.oneshot():
            # get the process id
            pid = process.pid
            if pid == 0:
                # System Idle Process for Windows NT, useless to see anyways
                continue
0, as a result, the following function takes the previous processes list and converts it to a dataframe:

import psutil
from datetime import datetime
import pandas as pd
import time
import os
4

Hàm trên không chỉ chuyển đổi danh sách đó thành DataFrame, nó thực hiện nhiều thứ khác:

  • Nó đặt chỉ mục của mỗi hàng trong DataFrame làm ID quy trình (vì nó là định danh duy nhất).
  • Nó sắp xếp các hàng theo cột
        for process in psutil.process_iter():
            # get all process info in one shot
            with process.oneshot():
                # get the process id
                pid = process.pid
                if pid == 0:
                    # System Idle Process for Windows NT, useless to see anyways
                    continue
    1 sẽ được truyền dưới dạng các đối số dòng lệnh (chúng ta sẽ nhận được vào đó).
  • Vì chúng ta cần một cách tốt để in byte, nên nó áp dụng hàm
        for process in psutil.process_iter():
            # get all process info in one shot
            with process.oneshot():
                # get the process id
                pid = process.pid
                if pid == 0:
                    # System Idle Process for Windows NT, useless to see anyways
                    continue
    2 (mà chúng ta sẽ khai báo trong một khoảnh khắc) chuyển đổi một loạt các số lớn thành định dạng byte (chẳng hạn như 54,4MB, 103.3kb, v.v.)54.4MB, 103.3KB, etc.)
  • Nó cũng định dạng
        for process in psutil.process_iter():
            # get all process info in one shot
            with process.oneshot():
                # get the process id
                pid = process.pid
                if pid == 0:
                    # System Idle Process for Windows NT, useless to see anyways
                    continue
    3 như một ngày có thể đọc được.

Đây là hàm get_size ():get_size() function:

import psutil
from datetime import datetime
import pandas as pd
import time
import os
5

Bây giờ chúng ta hãy thực hiện một số đối số dòng lệnh phân tích cú pháp:

import psutil
from datetime import datetime
import pandas as pd
import time
import os
6

Nếu bạn không quen thuộc với mô-đun tích hợp

    for process in psutil.process_iter():
        # get all process info in one shot
        with process.oneshot():
            # get the process id
            pid = process.pid
            if pid == 0:
                # System Idle Process for Windows NT, useless to see anyways
                continue
4 của Python, nó cho phép chúng tôi dễ dàng phân tích các đối số được truyền từ dòng lệnh (tức là thiết bị đầu cuối).

Chúng tôi đã thêm một loạt các đối số, chẳng hạn như

    for process in psutil.process_iter():
        # get all process info in one shot
        with process.oneshot():
            # get the process id
            pid = process.pid
            if pid == 0:
                # System Idle Process for Windows NT, useless to see anyways
                continue
5 để hiển thị, cột
    for process in psutil.process_iter():
        # get all process info in one shot
        with process.oneshot():
            # get the process id
            pid = process.pid
            if pid == 0:
                # System Idle Process for Windows NT, useless to see anyways
                continue
1 mà chúng tôi sẽ sắp xếp theo DataFrame, số lượng quy trình hiển thị và
    for process in psutil.process_iter():
        # get all process info in one shot
        with process.oneshot():
            # get the process id
            pid = process.pid
            if pid == 0:
                # System Idle Process for Windows NT, useless to see anyways
                continue
7 chịu trách nhiệm cho việc bạn có muốn giữ cho chương trình chạy và liên tục cập nhật và liên tục cập nhật và In quy trình thông tin mỗi lần (như lệnh
    for process in psutil.process_iter():
        # get all process info in one shot
        with process.oneshot():
            # get the process id
            pid = process.pid
            if pid == 0:
                # System Idle Process for Windows NT, useless to see anyways
                continue
8 trong Linux).

Cuối cùng, hãy gọi các chức năng chúng tôi đã tạo và hiển thị DataFrame:

import psutil
from datetime import datetime
import pandas as pd
import time
import os
7

Tôi đang sử dụng phương thức

    for process in psutil.process_iter():
        # get all process info in one shot
        with process.oneshot():
            # get the process id
            pid = process.pid
            if pid == 0:
                # System Idle Process for Windows NT, useless to see anyways
                continue
9 ở đây in n hàng đầu tiên.n rows.

Bây giờ, để thực hiện điều này, bạn cũng nên chạy nó như một quản trị viên để có được thông tin về các quy trình hệ thống, đây là một đầu ra mẫu từ hộp Linux của tôi:

import psutil
from datetime import datetime
import pandas as pd
import time
import os
8

Và chúng tôi đi! Chúng tôi đã thực hiện điều này, như đã thảo luận ở trên, bạn có thể tạo một phiên bản GUI này, với các nút để giết, đình chỉ và tiếp tục quy trình vì đã có các chức năng có sẵn cho điều đó (____ 40, & nbsp; ________ 41 và

            # get the name of the file executed
            name = process.name()
2).

Ngoài ra còn có thông tin khác mà bạn có thể truy xuất không được thảo luận ở đây, nhập

            # get the name of the file executed
            name = process.name()
3 cho tất cả các trường và phương thức có sẵn hoặc kiểm tra tài liệu chính thức của họ.

Kiểm tra mã đầy đủ ở đây.

Ngoài ra, bạn có thể sử dụng

import psutil
from datetime import datetime
import pandas as pd
import time
import os
9 để truy xuất thông tin hệ thống chung và phần cứng.

Cuối cùng, nếu bạn là người mới bắt đầu và muốn học Python, tôi khuyên bạn nên tham gia khóa học & nbsp; Python cho mọi người Coursera, trong đó bạn sẽ học được rất nhiều về Python, chúc may mắn!Python For Everybody Coursera course, in which you'll learn a lot about Python, good luck!

Tìm hiểu thêm: & nbsp; Cách chuyển đổi các tệp Python thành các tệp thực thi.How to Convert Python Files into Executables.

Happy Coding ♥

Xem đầy đủ mã


Cũng đọc


Hướng dẫn how to access task manager using python - cách truy cập trình quản lý tác vụ bằng python

Hướng dẫn how to access task manager using python - cách truy cập trình quản lý tác vụ bằng python


Bảng bình luận

Làm thế nào để tôi thấy tất cả các quá trình chạy trong Python?

Chúng tôi sẽ sử dụng chức năng WMI.WIN32_Process để có được danh sách các quy trình chạy trên hệ thống. Sau đó, chúng tôi gọi hàm WMI. Win32_Process () để có được các quy trình chạy, được lặp lại thông qua từng quy trình và được lưu trữ trong quá trình biến.using the WMI. Win32_Process function in order to get the list of running processes on the system. Then we called the function WMI. Win32_Process() to get the running processes, iterated through each process and stored in variable process.

Tại sao Python trong Trình quản lý nhiệm vụ?

Một ứng dụng của bên thứ ba được cài đặt trên máy có thể đã được viết bằng Python và bao gồm cài đặt Python.Có nhiều ứng dụng như vậy, từ các chương trình GUI đến máy chủ mạng và tập lệnh hành chính.Một số máy Windows cũng đã cài đặt Python.. There are many such applications, from GUI programs to network servers and administrative scripts. Some Windows machines also have Python installed.

Làm thế nào để bạn tạo một nhiệm vụ trong Python?

Bắt đầu sử dụng Trình lập lịch tác vụ Windows..
Tạo nhiệm vụ đầu tiên của bạn.Tìm kiếm người lập lịch tác vụ của người dùng.....
Tạo một hành động.Đi hành động> mới ..
Thêm tệp thực thi Python vào tập lệnh chương trình.....
Thêm đường dẫn vào tập lệnh Python của bạn trong các đối số.....
Kích hoạt thực thi tập lệnh của bạn ..

Làm cách nào để lên lịch một nhiệm vụ trong Python?

5 cách để lên lịch công việc trong Python..
Vòng lặp đơn giản ..
Vòng lặp đơn giản nhưng được xâu chuỗi ..
Lịch trình thư viện ..
Python Crontab ..
Trình lập lịch RQ như hàng đợi đã tách rời ..