Source code for fudge.core.utilities.times

# <<BEGIN-copyright>>
# <<END-copyright>>

import os, time
timeIndicesNames = { 0 : 'user', 1 : 'sys', 2 : 'children', 3 : 'childrenSys', 4 : 'wall' }

[docs]class times : def __init__( self ) : self.reset( ) def __repr__( self ) : return( self.toString( ) )
[docs] def delta( self, reset = False ) : current, ts = os.times( ), {} for index in timeIndicesNames : ts[timeIndicesNames[index]] = current[index] - self.times[index] if( reset ) : self.reset( ) return( ts )
def _delta_cpu( self, times, includeChildren = True, includeSystem = True ) : indices = [ 0 ] if( includeChildren ) : indices.append( 2 ) if( includeSystem ) : indices += [ index + 1 for index in indices ] t = 0 for index in indices : t += times[timeIndicesNames[index]] return( t )
[docs] def delta_cpu( self, reset = False, includeChildren = True, includeSystem = True ) : times = self.delta( reset ) return( self._delta_cpu( times, includeChildren = includeChildren, includeSystem = includeSystem ) )
[docs] def delta_wall( self, reset = False ) : return( self.delta( reset )['wall'] )
[docs] def reset( self ) : self.times = os.times( )
[docs] def toString( self, prefix = '', reset = False, includeChildren = True, includeSystem = True, current = True ) : deltas = self.delta( reset = reset ) cpu = self._delta_cpu( deltas, includeChildren = includeChildren, includeSystem = includeSystem ) currentTime = '' if( current ) : currentTime = ' on %s' % time.ctime( ) return( '%sdelta times: cpu = %s s, wall = %.5g s%s' % ( prefix, cpu, deltas['wall'], currentTime ) )
if( __name__ == '__main__' ) : t = times( ) print t time.sleep( 1.4 ) print t.toString( ) print t.toString( current = False ) for i in xrange( 1000 * 1000 ) : y = i**2 print t.toString( prefix = '# ', current = False ) print t.toString( prefix = '# ', current = True ) print t.delta_cpu( ) print t.delta_wall( ) print t.toString( prefix = '# ', current = True ) print t.toString( prefix = '# ', current = True, includeChildren = False ) print t.toString( prefix = '# ', current = True, includeChildren = False, includeSystem = False )