def __enter__(self): cput = P.cpu_times() memi = P.memory_info_ex() self.start_sys = cput.system self.start_user = cput.user self.start_rss = memi.rss self.start_disk = get_wdb() + get_ldb()
def __memory_watcher(self, data): max_memory = 0 try: p = Process(data[0]) memory = 1 while 0 < memory and max_memory <= self.__mem_lim: if os_name.lower() == 'linux': memory = p.memory_info()[0] - p.memory_info_ex().shared elif os_name.lower() == 'darwin': memory = p.memory_info()[0] elif os_name.lower() == 'windows': memory = p.memory_info_ex().private if max_memory < memory: max_memory = memory data[1]() except NoSuchProcess: pass finally: data.append(max_memory)
def __exit__(self, *args): cput = P.cpu_times() memi = P.memory_info_ex() self.stop_sys = cput.system self.stop_user = cput.user self.stop_rss = memi.rss self.stop_disk = get_wdb() + get_ldb() t_elapsed_sys = self.stop_sys - self.start_sys t_elapsed_user = self.stop_user - self.start_user t_elapsed = t_elapsed_sys + t_elapsed_user print >>sys.stderr, blessings.Terminal().yellow('timer: {} took {} (user: {}, sys: {}) seconds.'.format(self.name, t_elapsed, t_elapsed_user, t_elapsed_sys)) print >>sys.stderr, blessings.Terminal().yellow('timer: rss = {} MiB. (change: {} MiB).'.format(self.stop_rss/1048576.0, (self.stop_rss-self.start_rss)/1048576.0)) print >>sys.stderr, blessings.Terminal().yellow('timer: disk = {} MiB. (change: {} MiB).'.format(self.stop_disk/1048576.0, (self.stop_disk-self.start_disk)/1048576.0)) print >>sys.stderr stats[self.name+'.Memory'] = self.stop_rss + self.stop_disk stats[self.name+'.Runtime'] = t_elapsed