& 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:
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:
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
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.import psutil
from datetime import datetime
import pandas as pd
import time
import os
Lý do mà chúng ta cần
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.def get_processes_info[]:
# the list the contain all process dictionaries
processes = []
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
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.def get_processes_info[]:
# the list the contain all process dictionaries
processes = []
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.
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:def get_processes_info[]:
# the list the contain all process dictionaries
processes = []
# get the name of the file executed
name = process.name[]
Lấy thời gian khi quá trình được tạo vào
3, do đó, chúng tôi sẽ chuyển đổi sang đối tượng DateTime Python thích hợp:datetime object:def get_processes_info[]:
# the list the contain all process dictionaries
processes = []
# 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
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 = []
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
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].def get_processes_info[]:
# the list the contain all process dictionaries
processes = []
Phương pháp
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.def get_processes_info[]:
# the list the contain all process dictionaries
processes = []
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
0Tổng số chủ đề sinh ra:
import psutil
from datetime import datetime
import pandas as pd
import time
import os
1Cuố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
2Hã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
3Lưu ý rằng không có thông tin sử dụng mạng về từng quy trình, đó là vì
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.import psutil
from datetime import datetime
import pandas as pd
import time
import os
Như đã đề cập trước đó, chúng tôi sẽ chuyển đổi danh sách các quy trình thành
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
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
4Hà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
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 đó].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
- Vì chúng ta cần một cách tốt để in byte, nên nó áp dụng hàm
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.]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
- Nó cũng định dạng
3 như một ngày có thể đọc đượ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
Đây là hàm get_size []:get_size[] function:
import psutil
from datetime import datetime
import pandas as pd
import time
import os
5Bâ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
6Nếu bạn không quen thuộc với mô-đun tích hợp
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]. 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
Chúng tôi đã thêm một loạt các đối số, chẳng hạn như
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]. 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
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
7Tôi đang sử dụng phương thức
9 ở đây in n hàng đầu tiên.n rows. 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
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
8Và 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à
2]. # get the name of the file executed
name = process.name[]
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
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ọ. # get the name of the file executed
name = process.name[]
Kiểm tra mã đầy đủ ở đây.
Ngoài ra, bạn có thể sử dụng
9 để truy xuất thông tin hệ thống chung và phần cứng.import psutil
from datetime import datetime
import pandas as pd
import time
import os
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ã