pdfminer.six/tools/prof.py

30 lines
760 B
Python
Raw Normal View History

#!/usr/bin/env python
import sys
def prof_main(argv):
import getopt
import hotshot, hotshot.stats
def usage():
print 'usage: %s output.prof mod.func [args ...]' % argv[0]
return 100
args = argv[1:]
if len(args) < 2: return usage()
prof = args.pop(0)
name = args.pop(0)
i = name.rindex('.')
(modname, funcname) = (name[:i], name[i+1:])
func = getattr(__import__(modname, fromlist=[modname]), funcname)
if args:
args.insert(0, argv[0])
prof = hotshot.Profile(prof)
prof.runcall(lambda : func(args))
prof.close()
else:
stats = hotshot.stats.load(prof)
stats.strip_dirs()
stats.sort_stats('time', 'calls')
stats.print_stats(1000)
return
if __name__ == '__main__': sys.exit(prof_main(sys.argv))