Python 获取端口进程
引言
在开发过程中,我们经常需要获取某个端口的进程信息,以便进行相关的操作。下面将会介绍如何使用 Python 来实现获取端口进程的功能。
整体流程
首先,让我们来看一下整个过程的流程图。
flowchart TD
A[开始] --> B[导入相关模块]
B --> C[获取端口占用信息]
C --> D[解析占用信息]
D --> E[获取进程信息]
E --> F[输出结果]
F --> G[结束]
步骤说明
接下来,将逐步介绍每个步骤需要做的事情,并提供相应的代码和注释。
1. 导入相关模块
首先,我们需要导入一些 Python 的模块来帮助我们完成任务。其中,我们需要使用 socket
模块来获取端口占用信息,使用 psutil
模块来获取进程信息。
# 导入相关模块
import socket
import psutil
2. 获取端口占用信息
接下来,我们需要获取指定端口的占用信息。我们可以通过创建一个临时的 Socket 连接来获取该端口的占用情况。
# 获取端口占用信息
def get_port_usage(port):
# 创建一个临时的 Socket 连接
with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
# 设置超时时间为1秒钟
s.settimeout(1)
# 尝试连接指定端口
result = s.connect_ex(('127.0.0.1', port))
# 如果连接成功,则说明该端口已被占用
if result == 0:
return True
else:
return False
3. 解析占用信息
获取端口占用信息后,我们需要对其进行解析,以获取进程的相关信息。我们可以使用 psutil
模块的 Process
类来获取进程信息。
# 解析占用信息
def parse_port_usage(port):
# 获取端口占用信息
is_used = get_port_usage(port)
# 如果端口已被占用,则获取进程信息
if is_used:
# 获取进程ID
pid = psutil.net_connections()[0].pid
# 获取进程名称
process_name = psutil.Process(pid).name()
# 返回进程信息
return pid, process_name
else:
return None
4. 获取进程信息
在获取到进程的相关信息后,我们可以对其进行进一步的处理,以满足实际需求。
# 获取进程信息
def get_process_info(port):
# 解析占用信息
process_info = parse_port_usage(port)
# 如果获取到进程信息,则进行处理
if process_info:
pid, process_name = process_info
# 获取进程的其他信息,如CPU占用率、内存占用率等
cpu_percent = psutil.Process(pid).cpu_percent()
memory_percent = psutil.Process(pid).memory_percent()
# 返回完整的进程信息
return {
'pid': pid,
'process_name': process_name,
'cpu_percent': cpu_percent,
'memory_percent': memory_percent
}
else:
return None
5. 输出结果
最后,我们可以将获取到的进程信息进行输出,以便查看或进行其他操作。
# 输出结果
def print_process_info(process_info):
if process_info:
print('进程ID:', process_info['pid'])
print('进程名称:', process_info['process_name'])
print('CPU 占用率:', process_info['cpu_percent'])
print('内存占用率:', process_info['memory_percent'])
else:
print('端口未被占用')
完整代码
下面是完整的代码:
# 导入相关模块
import socket
import psutil
# 获取端口占用信息
def get_port_usage(port):
# 创建一个临时的 Socket 连接
with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
# 设置超时时间为1秒钟
s.settimeout(1)
# 尝试连接指定端口
result =