💾

Go psutilライブラリの紹介

2023/04/07に公開

Pythonでもお馴染みのメモリ使用量などを取得するライブラリ、psutilのGo版gopsutilというライブラリがあったので軽く紹介したいと思います。

使い方

Get package

https://github.com/shirou/gopsutil
以下のコマンドからいけます。

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")
}

ブラウザでの表示はこんな感じです。

https://github.com/roistaff/go-mem-api

まとめ

Pythonでよく使う便利なライブラリだからGoでも実装しよう!といった便利なライブラリがgithubにたくさんあるのでぜひ探してみてください。

Discussion

Hidden comment