watch 50 行代码实现 windows watch

2023-05-16

watch 50 行代码实现 windows watch

最近想监控 gpu 使用情况,无奈在 windows 上没有 watch 指令,nvidia-smi -lms 20 自带输出也不美观,那么为何不自己写个工具来监控呢。

如下图可以看到 gpu 温度和功耗的变动情况

watch-nvidia-smi

下面使用 50 行代码来实现 watch nvidia-smi 功能。

package main

import (
	"bufio"
	"bytes"
	"fmt"
	"log"
	"os/exec"
	"time"
)

func LineMoveUp(n int) {
	fmt.Printf("\033[%dA", n)
}

func HideCursor() {
	fmt.Printf("\033[?25l")
}

func ShowCursor() {
	fmt.Printf("\033[?25h")
}

// https://en.wikipedia.org/wiki/ANSI_escape_code
// CSI (Control Sequence Introducer) sequences
func main() {
	for true {
		out, err := exec.Command("nvidia-smi").Output()
		if err != nil {
			log.Fatal(err)
		}

		HideCursor()
		scanner := bufio.NewScanner(bytes.NewReader(out))
		line := 0
		for scanner.Scan() {
			fmt.Printf("%s\n", scanner.Text())
			line++
			if line > 12 {
				break
			}
		}
		LineMoveUp(line)
		time.Sleep(150 * time.Millisecond)
		ShowCursor()
	}
}

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

watch 50 行代码实现 windows watch 的相关文章

随机推荐

  • stm32printf函数的串口输出代码

    stm32f103串口一与串口二printf函数输出 因项目需要特意配置了该段代码 xff0c 不喜勿喷 xff0c 纯属个人笔记 对于串口的代码网上也是很多 xff0c 无非是配置问题 xff0c 该代码是基于stm32f103c8t6来
  • C/C++ —— 小端转大端函数的使用

    函数说明 uint32 t htonl uint32 t hostlong uint16 t htons uint16 t hostshort uint32 t ntohl uint32 t netlong uint16 t ntohs u
  • AntDesign Upload组件上传图片

    技术选型 前端技术选型 xff1a React Hook 43 typescript antd版本 xff1a 3 18 使用Upload上传图片 上传效果截图 预览效果截图 项目中完整写法 xff1a span class token k
  • [LeetCode] 876. Middle of the Linked List

    Given a non empty singly linked list with head node head return a middle node of linked list If there are two middle nod
  • 博客搬家啦

    博客搬家啦 xff0c 新博客地址 https blueleek blue 小伙伴一起嗨学一起来
  • MFC 改变编辑框字体(大小,字体)

    1 在 Dlg h文件中加入 CFont font 字体对象 2 定义一个CEdit控件变量 CEdit m EditAa 61 CEdit GetDlgItem IDC A EDIT A 关联控件A CEdit m EditBb 61 C
  • STM32 中浮点转成字符串,解决 -u_printf_float

    开发偶遇问题 在C 43 43 或其他高级语言中 xff0c 以及C语言在Visual Studio或者linux平台上 xff0c 是可以直接通过sprintf将 xff0c int float转换成string类型的 xff1b 但是
  • 路由器原理(一)

    觉得之前对路由器的了解还不是特别清楚 xff0c 继续来学习 xff0c 是参考了路由器的原理及其配置 xff08 一 xff09 一 xff1a 路由器的基础知识 xff08 1 xff09 路由器的概述 xff1a 作为网络层的网络互连
  • 表单提交及后台数据接收

    用POST请求 xff0c 后台原生接收的一个公式 xff1a span class hljs transposed variable req span addListener span class hljs string 34 data
  • JSON怎样添加注释

    今天在写一个程序的时候发现了一个问题 xff0c 在json文件中添加注释之后 xff0c 程序就出现bug了 于是 xff0c 去搜了一下这个问题的相关解释 xff0c 在这里和大家分享一下 xff1a JSON为什么不能添加注释 xff
  • Converting circular structure to JSON

    在做手机验证码模块 xff0c 遇到一个bug Converting circular span class hljs keyword structure span span class hljs keyword to span JSON
  • Mac root和普通用户切换

    今日 xff0c 老身在用su 命令 xff0c 输入密码之后准备切换至root用户 但不幸得到这个消息 xff1a su Sorry 找到解决方案如下 xff1a span class hljs built in sudo span su
  • TCP UDP 的区别和具体应用场景

    TCP和UDP 两者都是通信协议 xff0c TCP和UDP都是传输层协议 xff0c 但是他们的通信机制和应用场景不同 TCP TCP xff08 Transmission Control Protocol xff09 又叫传输控制协议
  • 浏览器缓存机制详解(一)

    浏览器缓存机制可以极大的提升用户体验 xff0c 另一方面会因为读取缓存而展示了错误的东西 xff0c 因而在开发中要设法将其删除 什么是浏览器缓存 xff1f 浏览器缓存就是把一个已经请求过的web资源 xff08 如html页面 xff
  • G2O库和Eigen库can not find 问题——FindG2O.cmake FindEigen3.cmake

    目录 CMakeLists设置FindG2O cmake文件内容FindEigen3 cmake 文件内容 CMakeLists设置 在CMakeLists里加入如下这句话 xff0c 并在项目文件夹中新建cmake文件夹 LIST APP
  • sockaddr_in结构体

    点击进入结构如下 xff1a struct sockaddr in uint8 t sin len sa family t sin family in port t sin port struct in addr sin addr char
  • Win7下VS2010使用STLPort .

    Win7下VS2010使用STLPort 更新于2012年8月24日 星期五 http blog csdn net shunqiziranhao007 article details 7905435 STLport的下载地址 http so
  • 【极简笔记】OpenPose

    极简笔记 Realtime Multi Person 2D Pose Estimation using Part Affinity Fields 论文地址 xff1a https arxiv org abs 1611 08050 文章的核心
  • C++各类库

    1 C 43 43 各大有名库的介绍 C 43 43 标准库 2 C 43 43 各大有名库的介绍 准标准库Boost 3 C 43 43 各大有名库的介绍 GUI 4 C 43 43 各大有名库的介绍 网络通信 5 C 43 43 各大有
  • watch 50 行代码实现 windows watch

    watch 50 行代码实现 windows watch 最近想监控 gpu 使用情况 xff0c 无奈在 windows 上没有 watch 指令 xff0c nvidia smi lms 20 自带输出也不美观 xff0c 那么为何不自