Golang获取Windows系统的CPU、内存和磁盘使用率的方法
Golang获取Windows系统的CPU、内存和磁盘使用率的方法 大家好,
有没有人知道如何在Windows系统中获取CPU、内存和磁盘的使用情况? 在Linux系统中获取这些信息并不困难,但我却很难从Windows系统中获取到任何相关信息。
2 回复
更多关于Golang获取Windows系统的CPU、内存和磁盘使用率的方法的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html
在Windows系统中获取系统资源使用率,可以使用gopsutil库,这是跨平台的系统监控库。以下是具体实现方法:
package main
import (
"fmt"
"github.com/shirou/gopsutil/v3/cpu"
"github.com/shirou/gopsutil/v3/disk"
"github.com/shirou/gopsutil/v3/mem"
"time"
)
func main() {
// 获取CPU使用率
cpuPercent, err := cpu.Percent(time.Second, false)
if err != nil {
fmt.Printf("获取CPU使用率失败: %v\n", err)
} else {
fmt.Printf("CPU使用率: %.2f%%\n", cpuPercent[0])
}
// 获取内存使用率
memInfo, err := mem.VirtualMemory()
if err != nil {
fmt.Printf("获取内存信息失败: %v\n", err)
} else {
fmt.Printf("内存使用率: %.2f%%\n", memInfo.UsedPercent)
fmt.Printf("总内存: %.2f GB\n", float64(memInfo.Total)/1024/1024/1024)
fmt.Printf("已用内存: %.2f GB\n", float64(memInfo.Used)/1024/1024/1024)
}
// 获取磁盘使用率(C盘)
diskInfo, err := disk.Usage("C:")
if err != nil {
fmt.Printf("获取磁盘信息失败: %v\n", err)
} else {
fmt.Printf("C盘使用率: %.2f%%\n", diskInfo.UsedPercent)
fmt.Printf("C盘总空间: %.2f GB\n", float64(diskInfo.Total)/1024/1024/1024)
fmt.Printf("C盘可用空间: %.2f GB\n", float64(diskInfo.Free)/1024/1024/1024)
}
}
如果需要获取所有磁盘的信息:
// 获取所有磁盘分区
partitions, err := disk.Partitions(true)
if err != nil {
fmt.Printf("获取磁盘分区失败: %v\n", err)
return
}
for _, partition := range partitions {
usage, err := disk.Usage(partition.Mountpoint)
if err != nil {
continue
}
fmt.Printf("磁盘 %s 使用率: %.2f%%\n", partition.Mountpoint, usage.UsedPercent)
}
首先安装依赖:
go get github.com/shirou/gopsutil/v3
这个库通过调用Windows API(如PDH API)来获取系统性能数据,在Windows系统上运行良好。

