ruby 按照cpu的使用率对top中的进程排序(排序表格)
来源:互联网 发布:网络爬虫可以做什么 编辑:程序博客网 时间:2024/06/09 18:59
问题:解决如何使用ruby对表格(二维数组)进行排序?例如,按照cpu或mem的使用率对top中的进程排序,选出cpu最高的进程
解决方法: 使用二维数组存储表格,然后按照cpu使用率排序整个二维数组,选出cpu最高的那一行
假设top信息存在于与脚本同目录的txt文件中。具体信息如下:
代码:
top_info_lines = []column_names = []#获取top信息需要处理的部分top_info = IO.readlines('top_info.txt')[6..-1]top_info.each do |line| if line =~ /.*\%.*/ column_names = line.split() #第一行是各列的名字 endendtop_info_lines = top_info[1..-1] #只获取带数字的信息部分arr = Array.new(top_info_lines.size){Array.new(8) {0}} #创建二维数组,初始值为0#将要排序的信息存进二维数组top_info_lines.each_with_index do |x, row| x.to_s.gsub(/\r\n?/, "").split().each_with_index do |y, col| arr[row][col] = y endend#按照第8列正序,第9列反序的方式排序arr_sort = arr.sort_by{|a| [a[8].to_i, -a[9].to_i]}if __FILE__ == $0 puts "the top info is :" puts column_names.join(" ") arr_sort.each do |element| puts element.join(" ") end puts "****************************" max_cpu_min_mem = [] #选出第8列值最大的行 max_cpu = arr_sort.map {|a| a[8].to_i }.max max_cpu_lines = arr_sort.select{|a| a[8].to_i == max_cpu} #从第8列值最大的行中,选出第9列值最小的行 min_mem = max_cpu_lines.map {|a| a[9].to_i }.min max_cpu_min_mem = max_cpu_lines.select{|a| a[9].to_i == min_mem} puts "the top info with max cpu and min mem is :" max_cpu_min_mem.each do |element| puts element.join(" ") endend
运行结果:
0 0
- ruby 按照cpu的使用率对top中的进程排序(排序表格)
- python 按照cpu的使用率对top中的进程排序(排序表格)
- 统计某个进程的cpu使用率使用top命令
- 按照拼音对数组中的中文字符串排序的算法
- js对表格的排序
- linux使用top命令跟踪进程的CPU占用率、内存使用率
- 【Ruby】对Hash排序
- java 对 汉字排序(按照拼音字母排序)
- oracle中对排序的总结(按照拼音、部首、笔画排序功能 )
- 对list集合中的对象按照字段属性排序
- 对ArrayList中的元素按照某一列进行排序
- 对List集合中的Dog按照年龄从小到大排序
- 对ArrayList中的元素按照某一列进行排序
- Java对List中的中文属性按照拼音排序
- 获得系统中某个进程的cpu使用率!(ZZ)
- 用php中的数组排序函数对表格排序
- oracle 使用instr()函数对in查询出的记录按照in中的数据进行排序
- ios 按照拼音对数组中的中文字符串排序的算法
- 专题二总结 搜索算法
- Java基础知识:走进Java的世界
- Java内存模型
- C语言位操作
- 维护篇(5.2)-14. 内网接口性能测试 ❀ 飞塔 (Fortinet) 防火墙
- ruby 按照cpu的使用率对top中的进程排序(排序表格)
- 小结一下那些发起数据请求的元素(客户端与服务器端的基情)
- Android 自定义添加,查询联系人
- Redis之1-基本目录
- 认识组件——活动(Activity)
- 类的R引用全部报错
- linux、mac 安装mysql
- mysql-5.6.17-win32免安装版配置
- IOS 图片水印或者文字