Learning python 系列8

本文介绍了配置文件管理类VMCConfig及其基类VMCConfigBase的功能与使用方式,并详细解析了NetworkSpeed类如何进行网络速度的实时监测。
今天计划三个文件:config.py,netspeed.py,和oal.py.
config.py
class VMCConfigBase类有成员变量:__init__(self,path)
path:
conf:由ConfigParser()
fileobj:有open(self.path)而得
对conf调用readfp(self.fileobj).
有方法:
get(self,section,option):调用self.conf.get(section,option)
getboolean(self,section,option):调用self.conf.getboolean(section.option)
write(self):调用self.conf.write(open(self.path,'w')
set(self,section,option,value):
setboolean(self,section,option,val):
close(self):
update(self,c):
其实上述方法都是对self.conf的对应方法的封装。除了setboolean,close和update.

VMCConfig类是继承VMCConfigBase.多了变量current_profile.__init__(self,path=VMC_CFG)
有方法:
__initialize_profile(self):取得profile通过self.get('profile','name').然后调用
set_current_profile(profile).
create_profile_from_dict(self,opts):用opts['profile_name']作为path来创建一份profile.
然后调用current_profile.set()来设置:username,password,apn,等等。
create_new_profile(self,name):如果current_file存在,write。重新copy,然后再设立一份。
与set_current_file基本相同。除了self.current_profile(PROFTEMPLATE,path).
set_current_file(self,name):如果current_file存在,write,设置current_profile=NOne.
重新取得path,构造新的current_file.调用self.set('profile','name',name),self.write().
close(self):调用父类的close(),如果current_file存在,关闭之。
并用这个类声称一个对象config.

而ConfigurationData的类有一个字典变量:settings。
load和save方法都没实现。

ConnectionConfigurationData是ConfigurationData的子类,但是这里只给出了。doc string.

NetworkSpeed是一个类,有类变量CMD='cat',PATH='/proc/net/dev',INTERVAL=0.5
有实例变量:
speed={}
loop=task.LoopingCall(self.compute_stats)
mutex=defer.DeferredLock()
_time
_inbits
_outbits
speed_regexp=osobj.abstraction['STATSREGEXP']
这里重载了
__getitem__(self,key):返回self.speed[key]
start(self):调用loop.start(self,INTERVAL,now=False).并记录时间
self._time = time().
stop(self):调用self.loop.stop().
compute_stats(self):调用getProcessOutput(self.CMD,args=[self.PATH]).
添加callback:parse_input,update_stats.
parse_input(self,text):
调用self.speed_regexp.search(text),如果match的话,算inbits,outbits.
通过match.group('in')*8.返回inbits,outbits.
update_stats(self,(inbits,outbits)):
更新self._inbits,_outbits.取得self.mutex.acquire,添加callback doit.
doit球的当前的时间,与上次保存的时间差。取出in_diff,out_diff.计算up和down的速度。
并且存储这次的inbits,outbits,now,然后release mutex.

oal文件提供了osobj.有get_os_obj()而来。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值