免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 4331 | 回复: 5
打印 上一主题 下一主题

用python写了个控制cpu变频范围的小程序 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-08-09 00:31 |只看该作者 |倒序浏览
CpuFreq
这是一个控制cpu变频范围和笔记本风扇工作模式的GUI小程序.


如果你在可变频的笔记本(intel PM ;AMD Turion),上安装linux.
使用本程序,你可以很方面的在gui界面下设置你所需要的运行环境:
比如说:
cpu是PM 0.6Ghz-1.7Ghz的。

你可以在工作时候设置为1.7GHz-1.2GHz,
不插电时设置为1.2GHz-0.8GHz
晚上挂驴下载时设为0.8Ghz-0.6Ghz

你还可以选择你的cpu风扇运行于 主动 或 被动 模式。


主动模式:风扇持续低转速运行,随着cpu温度身高逐渐提高转速。
被动模式:空闲时风扇停转,当cpu温度超过BIOS设置的阀值时,启动风扇降温,温度下降时再停止风扇工作。


cpu 变频次数 和 各频率运行比例 统计。

下载:
http://www.linuxfans.org/nuke/mo ... eninfo&did=4498

界面是用wxpython写的。
使用了MDI结构。
在全部wx.MDIChildFrame  Show 完成后,,发现不论怎么 Raise()  都不能把之先前列出的wx.MDIChildFrame 前置。。。   
请前辈为我指点下。。。
谢谢。

[ 本帖最后由 lvscar 于 2006-8-9 11:58 编辑 ]

论坛徽章:
0
2 [报告]
发表于 2006-08-09 15:27 |只看该作者
沙发。
看上去不错,学习一下。

论坛徽章:
0
3 [报告]
发表于 2006-08-10 09:52 |只看该作者
很厉害啊

论坛徽章:
0
4 [报告]
发表于 2006-08-10 14:31 |只看该作者
哈。。。。     工作层简单死了。。就是几个echo命令。   

  1. def GetCpuData():
  2.         """cpudata.keys == ['trans_table', 'scaling_max_freq', 'scaling_governor', 'scaling_min_freq', 'scaling_available_governors', 'scaling_available_frequencies', 'time_in_state', 'total_trans']"""
  3.         cpudatadir = '/sys/devices/system/cpu/cpu0/cpufreq/'
  4.         data = {'scaling_available_frequencies':'','scaling_available_governors':'','scaling_governor':'','scaling_max_freq':'','scaling_min_freq':'','time_in_state':'','total_trans':'','trans_table':''}
  5.         for i in data.keys():
  6.                 if i not in ['time_in_state','total_trans','trans_table']:
  7.                         d = open(cpudatadir+i).read()
  8.                         data[i] = d
  9.                 else:
  10.                         d = open(cpudatadir+'stats/'+i).read()
  11.                         data[i] = d
  12.         return data
  13.        
  14. def SetCpuData(scaling_max_freq=0,scaling_min_freq=0,scaling_governor=0):
  15.         cpudatadir = '/sys/devices/system/cpu/cpu0/cpufreq/'
  16.         targetlist = ['scaling_min_freq','scaling_max_freq','scaling_governor']
  17.         targetlist = [cpudatadir + i for i in targetlist]
  18.         changelist = [scaling_min_freq,scaling_max_freq,scaling_governor]
  19.         for i in range(3):
  20.                 if not changelist[i] == 0:
  21.                         d = open(targetlist[i],'w')
  22.                         d.write(str(changelist[i]))
  23.                         d.close()
  24.                 else : pass
  25.        
  26.                        
  27. def Fandata(mode,state='None'):
  28.         """when mode it 'set',state instruct what cpu cooling mode should be use,0 mean active,1 mean passive"""
  29.         dir = '/proc/acpi/thermal_zone/THRM/'
  30.         if mode == 'get':
  31.                 d = open(dir+'cooling_mode','r')
  32.                 D = d.read()
  33.                 d.close()
  34.                 t = open(dir+'temperature','r')
  35.                 T = t.read()
  36.                 T = T.replace('   ','')
  37.                 t.close()
  38.                 return D , T
  39.         if mode == 'set':
  40.                 d = open(dir+'cooling_mode','w')
  41.                 d.write(state)
  42.                 d.close()
复制代码

论坛徽章:
4
CU大牛徽章
日期:2013-03-13 15:29:07CU大牛徽章
日期:2013-03-13 15:29:49CU大牛徽章
日期:2013-03-13 15:30:192015亚冠之广州恒大
日期:2015-07-22 17:20:15
5 [报告]
发表于 2006-08-10 21:24 |只看该作者
嘿嘿 在linux下就可以这么简单 设备就是文件 哈哈

论坛徽章:
0
6 [报告]
发表于 2006-08-11 15:41 |只看该作者
读系统文件就中啦,我以为LZ是在WIN下实现的,不过对LZ的界面很感兴趣,怎么弄D?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP