讲真python在处理数据的时候还是很方便的,但是安装以及他的不兼容性觉得有点无奈
lit lit_freq1 lit_freq2 lit_freq3 lit_freq4 lit_freq5 online offline cpu0 11.08% 0.11% 0.24% 0.08% 5.83% 17.33% 82.67% cpu1 9.13% 0.09% 0.20% 0.06% 4.81% 14.29% 85.71% cpu2 5.28% 0.05% 0.12% 0.04% 2.78% 8.26% 91.74% cpu3 5.13% 0.05% 0.11% 0.04% 2.70% 8.03% 91.97% xxxxx 63.89% 0.62% 1.41% 0.45% 33.63% big big_freq1 big_freq2 big_freq3 big_freq4 big_freq5 big_freq6 online offline cpu4 5.30% 0.15% 0.16% 0.13% 0.04% 0.16% 5.94% 94.06% cpu5 0.84% 0.02% 0.03% 0.02% 0.01% 0.02% 0.95% 99.05% cpu6 1.92% 0.06% 0.06% 0.05% 0.01% 0.06% 2.15% 97.85% cpu7 0.00% 0.00% 0.00% 0.00% 0.00% 0.00% 0.00% 100.00% yyyyy 89.17% 2.59% 2.76% 2.25% 0.60% 2.63%
这里考虑的CPU分为两个cluster,其中CPU0\CPU1\CPU2\CPU3属于cluster0
CPU4\CPU5\CPU6\CPU7属于cluster1
比如我现在需要计算每个cluster横行和每个纵行的数据的和
#!/usr/bin/python # coding=utf-8 from collections import OrderedDict import os import sys file_path = sys.argv[1] def open_file_get_time_data(file_name, dic_data,order_dic_freq={}): lit_freq = [lit_freq1, lit_freq2, lit_freq3, lit_freq4, lit_freq5] big_freq = [big_freq1, big_freq2, big_freq3, big_freq5, big_freq5, big_freq6] try: with open ( file_name, "r", encoding="UTF-8", errors='ignore' ) as file_obj: lines = file_obj.readlines() for content in lines: if(content.split()): list = content.split() #print(list) if(list[0]=="cpu0" or list[0]=="cpu1" or\ list[0]=="cpu2" or list[0]=="cpu3"): i = 1 for freq in lit_freq: dic_data["lit_"+list[0]][freq] = float(list[i].replace("%","")) #print(dic_data["lit_"+list[0]][freq]) i = i+1 if (list[0] == "cpu4" or list[0] == "cpu5" or \ list[0] == "cpu6" or list[0] == "cpu7"): i = 1 for freq in big_freq: dic_data["big_"+list[0]][freq] = float(list[i].replace("%","")) #print ( dic_data["lit"][freq] ) i = i + 1 except: print ( "there is some wrong during open" + file_name ) if __name__ == '__main__': cpu_result = file_path order_dic_cpu_result = OrderedDict() dic_sum = OrderedDict() dic_sum["lit"]=0 dic_sum["big"]=0 order_dic_cpu_result["lit_cpu0"] = OrderedDict () order_dic_cpu_result["lit_cpu1"] = OrderedDict () order_dic_cpu_result["lit_cpu2"] = OrderedDict () order_dic_cpu_result["lit_cpu3"] = OrderedDict () order_dic_cpu_result["big_cpu4"] = OrderedDict () order_dic_cpu_result["big_cpu5"] = OrderedDict () order_dic_cpu_result["big_cpu6"] = OrderedDict () order_dic_cpu_result["big_cpu7"] = OrderedDict () open_file_get_time_data ( cpu_result, order_dic_cpu_result) total = 0 for cluster in dic_sum: print(cluster) print("%-10s"%"SUM",end="") for dict_cluster in order_dic_cpu_result: if cluster in dict_cluster: for freq in order_dic_cpu_result[dict_cluster]: dic_sum[cluster] = dic_sum[cluster]+order_dic_cpu_result[dict_cluster][freq]/100*freq print(dic_sum[cluster]) total = total +dic_sum[cluster] print("%-10s"%"TOTAL",end="") print(total)
计算显示结果如下
lit
SUM x
big
SUM y
TOTAL x+y