本文整理汇总了Python中messenger.Messenger.cinfo方法的典型用法代码示例。如果您正苦于以下问题:Python Messenger.cinfo方法的具体用法?Python Messenger.cinfo怎么用?Python Messenger.cinfo使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类messenger.Messenger
的用法示例。
在下文中一共展示了Messenger.cinfo方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: Alex
# 需要导入模块: from messenger import Messenger [as 别名]
# 或者: from messenger.Messenger import cinfo [as 别名]
class Alex():
def __init__(self, name='alex', nevts=100, evtfreq=100):
""" Alex class
It is the main driver application
It has a list of algorithms that runs in sequence for a given number of events
It has a dictionary of services to be set into each algorithm
It has a dictionary with run information and event information (clean each event) to be set into in each alorithm
"""
self.name = name # name of the application
self.ievt = 0 # current number of event processed
self.nevts = nevts # number of events to run
self.evtfreq = evtfreq # frequency to print event number in log
self.counters = {}
self.algs = [] # list of algorithms to run
self.svcs = {} # dictionary with the services
# primordial msg service
self.msg = Messenger(name='msg')
self.addsvc(self.msg) # add msg service
# primordial request service (handle errrors, abort/end of job requets)
self.req = RequestSvc(name='req',al=self)
self.addsvc(self.req) # add request service
# event data service
self.evt = DataSvc(name='evt')
self.addsvc(self.evt) # add event data service
self.exports = ['msg','req','evt'] # services to export to algorithms
return
def _declare(self,obj):
""" add services and stores to the object
"""
if (not hasattr(obj,'imports')): return
nsvcs = obj.imports
if (not isinstance(nsvcs,list)):
self.msg.error(self.name,' no list of importing svc ',nsvcs)
return
if (isinstance(obj,ISvc)):
if (not 'msg' in nsvcs): nsvcs.append('msg')
elif (isinstance(obj,IAlg)):
for svc in self.exports:
if (not svc in nsvcs): nsvcs.append(svc)
#self.msg.info(self.name,' importing services to ', obj.name)
for nsvc in nsvcs:
if (not self.svcs.has_key(nsvc)):
self.msg.error(self.name,' no service ',nsvc,' to import ')
else:
svc = self.svcs[nsvc]
if (svc.name != obj.name): setattr(obj,svc.name,svc)
return
def addsvc(self,svc):
""" add a service by its name.
Each service hass access to the msg svc and run store
"""
self.msg.cinfo(self.name,' adding service ',svc.name)
self.svcs[svc.name] = svc
setattr(self,svc.name,svc)
self._declare(svc)
return
def addalg(self,alg):
""" add an algorithm to the list of algorithms to run.
Services are set into the algorithm.
It has access to the run store and event store.
"""
self.msg.cinfo(self.name,' algorithm to run ',alg.name)
self.algs.append(alg)
self._declare(alg)
# decorate the objects underneath
if (hasattr(alg,'algs')):
map(self._declare,alg.algs)
return
def initialize(self):
""" initilize the services and the algorithms
"""
self.msg.cinfo(' initilize ')
svcs = self.svcs.values()
map(self._declare, svcs)
oks1 = map(lambda svc: svc.initialize(), svcs)
if (len(self.algs) == 0):
self.msg.warning(self.name,' No algorithms to run')
return True
for alg in self.algs: self.counters[alg.name] = 0
oks2 = map(lambda alg: alg.initialize(), self.algs)
return (isok(oks1) and isok(oks2))
def execute(self):
""" do the execute method over the list of algorithms
"""
if (self.ievt%self.evtfreq==0):
self.msg.cinfo(' event ', self.ievt)
self.evt.clear()
if (len(self.algs)==0):
self.ievt += 1; return True
oks = map(lambda alg: alg.execute(), self.algs)
def count(alg,ok):
if (ok): self.counters[alg.name]+=1
map(count,self.algs,oks)
self.ievt+=1
#.........这里部分代码省略.........