python获取pid为3078的cpu占用率,按时间和占用率生成可视化表格
时间: 2024-09-12 18:10:49 浏览: 70
要获取特定进程ID (PID) 的 CPU 占用率并生成可视化表格,你可以使用Python的几个库来完成这个任务。首先,你需要获取进程的 CPU 使用情况,然后记录下来以生成可视化。
以下是完成这个任务的步骤:
1. 使用 `psutil` 库来获取特定PID的CPU使用率。
2. 使用 `matplotlib` 库来创建可视化图表。
3. 使用 `pandas` 库来组织和存储时间序列数据。
首先,你需要安装所需的库(如果你还没有安装的话):
```python
!pip install psutil matplotlib pandas
```
然后,你可以使用以下Python代码来实现所需功能:
```python
import psutil
import matplotlib.pyplot as plt
import pandas as pd
import time
# 捕获特定PID的进程
def get_process_by_pid(pid):
for proc in psutil.process_iter(['pid', 'name']):
if proc.info['pid'] == pid:
return proc
return None
# 获取特定进程的CPU使用率
def get_cpu_usage_by_process(pid):
process = get_process_by_pid(pid)
if process:
return process.cpu_percent(interval=1)
else:
print(f"Process with PID {pid} not found.")
return None
# 主函数来生成可视化图表
def main(pid):
cpu_usages = []
timestamps = []
# 持续获取CPU使用率数据
try:
for _ in range(10): # 假设我们要获取10个数据点
cpu_usage = get_cpu_usage_by_process(pid)
if cpu_usage is not None:
cpu_usages.append(cpu_usage)
timestamps.append(time.strftime('%Y-%m-%d %H:%M:%S', time.localtime()))
time.sleep(1) # 每秒获取一次数据
except KeyboardInterrupt:
pass # 用户中断程序
# 生成可视化图表
df = pd.DataFrame(list(zip(timestamps, cpu_usages)), columns=['Timestamp', 'CPU Usage'])
plt.figure(figsize=(10, 5))
plt.plot(df['Timestamp'], df['CPU Usage'], marker='o')
plt.xlabel('Time')
plt.ylabel('CPU Usage (%)')
plt.title(f'CPU Usage of PID {pid}')
plt.xticks(rotation=45)
plt.tight_layout()
plt.show()
if __name__ == '__main__':
main(3078)
```
这段代码首先定义了几个函数来获取进程信息和CPU使用率,然后在主函数中循环捕获10次CPU使用率数据(每个数据点间隔1秒),并将结果存储在pandas DataFrame中。最后,使用matplotlib生成CPU使用率随时间变化的折线图。
阅读全文