首页 > 其他分享 >go 统计资源消耗

go 统计资源消耗

时间:2023-11-14 15:14:47浏览次数:30  
标签:return err int 消耗 json error go SliverHorn 统计

import (     "runtime"     "time"
    "github.com/shirou/gopsutil/v3/cpu"     "github.com/shirou/gopsutil/v3/disk"     "github.com/shirou/gopsutil/v3/mem" )
const (     B  = 1     KB = 1024 * B     MB = 1024 * KB     GB = 1024 * MB )
type Server struct {     Os   Os   `json:"os"`     Cpu  Cpu  `json:"cpu"`     Ram  Ram  `json:"ram"`     Disk Disk `json:"disk"` }
type Os struct {     GOOS         string `json:"goos"`     NumCPU       int    `json:"numCpu"`     Compiler     string `json:"compiler"`     GoVersion    string `json:"goVersion"`     NumGoroutine int    `json:"numGoroutine"` }
type Cpu struct {     Cpus  []float64 `json:"cpus"`     Cores int       `json:"cores"` }
type Ram struct {     UsedMB      int `json:"usedMb"`     TotalMB     int `json:"totalMb"`     UsedPercent int `json:"usedPercent"` }
type Disk struct {     UsedMB      int `json:"usedMb"`     UsedGB      int `json:"usedGb"`     TotalMB     int `json:"totalMb"`     TotalGB     int `json:"totalGb"`     UsedPercent int `json:"usedPercent"` }
//@author: [SliverHorn](https://github.com/SliverHorn) //@function: InitCPU //@description: OS信息 //@return: o Os, err error
func InitOS() (o Os) {     o.GOOS = runtime.GOOS     o.NumCPU = runtime.NumCPU()     o.Compiler = runtime.Compiler     o.GoVersion = runtime.Version()     o.NumGoroutine = runtime.NumGoroutine()     return o }
//@author: [SliverHorn](https://github.com/SliverHorn) //@function: InitCPU //@description: CPU信息 //@return: c Cpu, err error
func InitCPU() (c Cpu, err error) {     if cores, err := cpu.Counts(false); err != nil {         return c, err     } else {         c.Cores = cores     }     if cpus, err := cpu.Percent(time.Duration(200)*time.Millisecond, true); err != nil {         return c, err     } else {         c.Cpus = cpus     }     return c, nil }
//@author: [SliverHorn](https://github.com/SliverHorn) //@function: InitRAM //@description: RAM信息 //@return: r Ram, err error
func InitRAM() (r Ram, err error) {     if u, err := mem.VirtualMemory(); err != nil {         return r, err     } else {         r.UsedMB = int(u.Used) / MB         r.TotalMB = int(u.Total) / MB         r.UsedPercent = int(u.UsedPercent)     }     return r, nil }
//@author: [SliverHorn](https://github.com/SliverHorn) //@function: InitDisk //@description: 硬盘信息 //@return: d Disk, err error
func InitDisk() (d Disk, err error) {     if u, err := disk.Usage("/"); err != nil {         return d, err     } else {         d.UsedMB = int(u.Used) / MB         d.UsedGB = int(u.Used) / GB         d.TotalMB = int(u.Total) / MB         d.TotalGB = int(u.Total) / GB         d.UsedPercent = int(u.UsedPercent)     }     return d, nil }

 

 

翻译

搜索

复制

标签:return,err,int,消耗,json,error,go,SliverHorn,统计
From: https://www.cnblogs.com/papering/p/17831601.html

相关文章

  • 关于Golang三个内存区域的形象比喻
    当我们使用Go语言编写程序时,可以将这三个内存区域类比为一个大的游乐场。Arena区就像是整个游乐场的主要区域,它是用于分配和管理大对象的地方。在这个区域,我们可以找到各种大型游乐设施,比如大型滑梯、蹦床和攀爬架等。这些设施需要更多的空间和资源来支持,因此它们被分配在Arena区域......
  • Golang内存泄漏的代码示例
    以下是几个可能导致内存泄漏的Go代码示例:资源未关闭:funcreadFile(){ file,err:=os.Open("filename.txt") iferr!=nil{ //错误处理 return } //使用file进行读取操作 //...}在上述代码中,readFile函数打开了一个文件,但没有在使用完后调用file.Close()来关闭文......
  • Golang select语句代码示例
    在Go语言中,select语句用于多路选择(multiplexing),允许在多个通信操作中选择可用的操作进行执行。select语句的语法如下:select{case<-channel1://当channel1有数据可读时执行的代码casedata:=<-channel2://当channel2有数据可读时执行的代码,同时将读取的数据存储在......
  • Golang 无缓冲channel有哪些特点?
    无缓冲channel是Go语言中的一种特殊类型的channel,其主要特点是在发送和接收数据时要求发送方和接收方必须同时准备好,否则会造成阻塞。具体来说,当一个无缓冲channel的发送操作没有准备好时,会阻塞发送方的执行;同样地,当一个无缓冲channel的接收操作没有准备好时,会阻塞接收方的执行。无......
  • Golang中如何使用new函数创建一个结构体对象?
    在Go语言中,可以使用new函数创建一个结构体对象的指针。下面是使用new函数创建结构体对象的示例:typePersonstruct{NamestringAgeint}funcmain(){//使用new函数创建一个Person结构体对象的指针p:=new(Person)//设置结构体对象的字段值......
  • Goby 是一款国内新出的安全扫描器
    Goby是一款国内新出的安全扫描器,它基于网络空间测绘技术进行资产收集,也就是先通过对目标网络的IT资产进行规则分析,建立知识库,在发生安全事件时就能直接用于应急响应,这项功能比较适合企业内部。Goby属于免费的工具,且跨平台支持Windows、Linux和macOS,界面不错,还提供了多个皮......
  • Oracle sql自定义统计月范围
     思路: 1,使用SUBSTR(to_char(INSPECTION_DATE,'yyyy-mm-dd'),-2)取出天数, 2,使用case……when……then……判断取出的天数是否大于等于25号,如果是则将日期设置成下月第一天 如果小于等于24号,则设置成当月第一天 3,使用TRUNC(ADD_MONTHS(INSPECTION_DATE,1),'mm')增......
  • Django中ORM如何执行原生sql语句操作数据库
    django中的ORM提供的操作功能有限,在模型提供的查询API不能满足实际工作需要时,可以在ORM中直接执行原生sql语句。Django提供两种方法使用原生SQL进行查询:一种是使用raw()方法,进行原生SQL查询并返回模型实例;另一种是完全避开模型层,直接执行自定义的SQL语句。另外就是用extra方法。......
  • Golang 锁
    写锁需要阻塞写锁:一个协程拥有写锁时,其他协程写锁定需要阻塞写锁需要阻塞读锁:一个协程拥有写锁时,其他协程读锁定需要阻塞读锁需要阻塞写锁:一个协程拥有读锁时,其他协程写锁定需要阻塞读锁不能阻塞读锁:一个协程拥有读锁时,其他协程也可以拥有读锁......
  • Django4
    路由曾无名分组有名分组反向解析无名分组反向解析有名分组反向解析路由分发伪静态的概念了解名称空间了解虚拟环境了解diango1.x和django2.x的区别视图层:三板斧序列化模块(dumps  JsonResponse)form表单上传文件FBV (functionbasedview) 和CBV......