1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74
|
import os,sys,re,time
def cmdline():
m=re.compile(r'\A\d+\Z')
args = []
repeat = 1
for a in sys.argv[1:]:
if m.match(a):
repeat = eval(a)
else:
args.append(a)
f2py_opts = ' '.join(args)
return repeat,f2py_opts
if sys.platform[:5]=='linux':
def jiffies(_proc_pid_stat = '/proc/%s/stat'%(os.getpid()),
_load_time=time.time()):
""" Return number of jiffies (1/100ths of a second) that this
process has been scheduled in user mode. See man 5 proc. """
try:
f=open(_proc_pid_stat,'r')
l = f.readline().split(' ')
f.close()
return int(l[13])
except:
return int(100*(time.time()-_load_time))
def memusage(_proc_pid_stat = '/proc/%s/stat'%(os.getpid())):
""" Return virtual memory size in bytes of the running python.
"""
try:
f=open(_proc_pid_stat,'r')
l = f.readline().split(' ')
f.close()
return int(l[22])
except:
return
else:
def jiffies(_load_time=time.time()):
""" Return number of jiffies (1/100ths of a second) that this
process has been scheduled in user mode. [Emulation with time.time]. """
return int(100*(time.time()-_load_time))
def memusage():
pass
def run(runtest,test_functions,repeat=1):
l = [(t,repr(t.__doc__.split('\n')[1].strip())) for t in test_functions]
#l = [(t,'') for t in test_functions]
start_memusage = memusage()
diff_memusage = None
start_jiffies = jiffies()
i = 0
while i<repeat:
i += 1
for t,fname in l:
runtest(t)
if start_memusage is None: continue
if diff_memusage is None:
diff_memusage = memusage() - start_memusage
else:
diff_memusage2 = memusage() - start_memusage
if diff_memusage2!=diff_memusage:
print 'memory usage change at step %i:' % i,\
diff_memusage2-diff_memusage,\
fname
diff_memusage = diff_memusage2
current_memusage = memusage()
print 'run',repeat*len(test_functions),'tests',\
'in %.2f seconds' % ((jiffies()-start_jiffies)/100.0)
if start_memusage:
print 'initial virtual memory size:',start_memusage,'bytes'
print 'current virtual memory size:',current_memusage,'bytes'
|