💾
Go psutilライブラリの紹介
Pythonでもお馴染みのメモリ使用量などを取得するライブラリ、psutilのGo版gopsutilというライブラリがあったので軽く紹介したいと思います。
使い方
Get package
以下のコマンドからいけます。
go get github.com/shirou/gopsutil/v3/mem
Usage
package main
import(
"github.com/shirou/gopsutil/v3/mem"
"fmt"
)
func main(){
v, _ := mem.VirtualMemory()
fmt.Println(v.Total) #メモリ容量
fmt.Println(v.Free) #空きメモリ容量
fmt.Println(v.Used) #メモリ使用量
}
出力される数値はunit64型で、単位はKBです。なので1024で2回割ってMBに変換します。
package main
import(
"github.com/shirou/gopsutil/v3/mem"
"fmt"
)
func main(){
v, _ := mem.VirtualMemory()
fmt.Println(v.Total / 1024 / 1024)
fmt.Println(v.Free / 1024 /1024)
fmt.Println(v.Used /1024 / 1024)
}
Test
ginライブラリを使ってPCのメモリ情報をreturnするAPIを作ってみました。
コード
package main
import (
"github.com/shirou/gopsutil/v3/mem"
"github.com/gin-gonic/gin"
)
type INFO struct {
Total uint64 `json:"total"`
Free uint64 `json:"free"`
Use uint64 `json:"use"`
}
func info_get() INFO {
v, _ := mem.VirtualMemory()
info := INFO{
Total: v.Total /1024 /1024,
Free: v.Free /1024 /1024,
Use: v.Used /1024 /1024,
}
return info
}
func main() {
r := gin.Default()
r.Use(func(c *gin.Context) {
c.Writer.Header().Set("Access-Control-Allow-Origin", "*")
c.Writer.Header().Set("Access-Control-Allow-Methods", "GET, POST, PUT, D
c.Writer.Header().Set("Access-Control-Allow-Headers", "Content-Type, Aut
c.Next()
})
r.GET("/info", func(c *gin.Context) {
info := info_get()
c.JSON(200,info)
})
r.Run(":8080")
}
ブラウザでの表示はこんな感じです。
まとめ
Pythonでよく使う便利なライブラリだからGoでも実装しよう!といった便利なライブラリがgithubにたくさんあるのでぜひ探してみてください。
Discussion