mirror of
https://github.com/noDRM/DeDRM_tools.git
synced 2024-11-05 13:36:10 +06:00
97 lines
2.6 KiB
Python
97 lines
2.6 KiB
Python
|
###########################################################################
|
||
|
#
|
||
|
# Psyco logger.
|
||
|
# Copyright (C) 2001-2002 Armin Rigo et.al.
|
||
|
|
||
|
"""Psyco logger.
|
||
|
|
||
|
See log() in core.py.
|
||
|
"""
|
||
|
###########################################################################
|
||
|
|
||
|
|
||
|
import _psyco
|
||
|
from time import time, localtime, strftime
|
||
|
|
||
|
|
||
|
current = None
|
||
|
print_charges = 10
|
||
|
dump_delay = 0.2
|
||
|
dump_last = 0.0
|
||
|
|
||
|
def write(s, level):
|
||
|
t = time()
|
||
|
f = t-int(t)
|
||
|
try:
|
||
|
current.write("%s.%02d %-*s%s\n" % (
|
||
|
strftime("%X", localtime(int(t))),
|
||
|
int(f*100.0), 63-level, s,
|
||
|
"%"*level))
|
||
|
current.flush()
|
||
|
except (OSError, IOError):
|
||
|
pass
|
||
|
|
||
|
def psycowrite(s):
|
||
|
t = time()
|
||
|
f = t-int(t)
|
||
|
try:
|
||
|
current.write("%s.%02d %-*s%s\n" % (
|
||
|
strftime("%X", localtime(int(t))),
|
||
|
int(f*100.0), 60, s.strip(),
|
||
|
"% %"))
|
||
|
current.flush()
|
||
|
except (OSError, IOError):
|
||
|
pass
|
||
|
|
||
|
##def writelines(lines, level=0):
|
||
|
## if lines:
|
||
|
## t = time()
|
||
|
## f = t-int(t)
|
||
|
## timedesc = strftime("%x %X", localtime(int(t)))
|
||
|
## print >> current, "%s.%03d %-*s %s" % (
|
||
|
## timedesc, int(f*1000),
|
||
|
## 50-level, lines[0],
|
||
|
## "+"*level)
|
||
|
## timedesc = " " * (len(timedesc)+5)
|
||
|
## for line in lines[1:]:
|
||
|
## print >> current, timedesc, line
|
||
|
|
||
|
def writememory():
|
||
|
write("memory usage: %d+ kb" % _psyco.memory(), 1)
|
||
|
|
||
|
def dumpcharges():
|
||
|
global dump_last
|
||
|
if print_charges:
|
||
|
t = time()
|
||
|
if not (dump_last <= t < dump_last+dump_delay):
|
||
|
if t <= dump_last+1.5*dump_delay:
|
||
|
dump_last += dump_delay
|
||
|
else:
|
||
|
dump_last = t
|
||
|
#write("%s: charges:" % who, 0)
|
||
|
lst = _psyco.stattop(print_charges)
|
||
|
if lst:
|
||
|
f = t-int(t)
|
||
|
lines = ["%s.%02d ______\n" % (
|
||
|
strftime("%X", localtime(int(t))),
|
||
|
int(f*100.0))]
|
||
|
i = 1
|
||
|
for co, charge in lst:
|
||
|
detail = co.co_filename
|
||
|
if len(detail) > 19:
|
||
|
detail = '...' + detail[-17:]
|
||
|
lines.append(" #%-3d |%4.1f %%| %-26s%20s:%d\n" %
|
||
|
(i, charge*100.0, co.co_name, detail,
|
||
|
co.co_firstlineno))
|
||
|
i += 1
|
||
|
current.writelines(lines)
|
||
|
current.flush()
|
||
|
|
||
|
def writefinalstats():
|
||
|
dumpcharges()
|
||
|
writememory()
|
||
|
writedate("program exit")
|
||
|
|
||
|
def writedate(msg):
|
||
|
write('%s, %s' % (msg, strftime("%x")), 20)
|