buildframework/helium/external/python/lib/2.5/psyco-1.6-py2.5.egg/psyco/logger.py
changeset 1 be27ed110b50
equal deleted inserted replaced
0:044383f39525 1:be27ed110b50
       
     1 ###########################################################################
       
     2 # 
       
     3 #  Psyco logger.
       
     4 #   Copyright (C) 2001-2002  Armin Rigo et.al.
       
     5 
       
     6 """Psyco logger.
       
     7 
       
     8 See log() in core.py.
       
     9 """
       
    10 ###########################################################################
       
    11 
       
    12 
       
    13 import _psyco
       
    14 from time import time, localtime, strftime
       
    15 
       
    16 
       
    17 current = None
       
    18 print_charges = 10
       
    19 dump_delay = 0.2
       
    20 dump_last = 0.0
       
    21 
       
    22 def write(s, level):
       
    23     t = time()
       
    24     f = t-int(t)
       
    25     try:
       
    26         current.write("%s.%02d  %-*s%s\n" % (
       
    27             strftime("%X", localtime(int(t))),
       
    28             int(f*100.0), 63-level, s,
       
    29             "%"*level))
       
    30         current.flush()
       
    31     except (OSError, IOError):
       
    32         pass
       
    33 
       
    34 def psycowrite(s):
       
    35     t = time()
       
    36     f = t-int(t)
       
    37     try:
       
    38         current.write("%s.%02d  %-*s%s\n" % (
       
    39             strftime("%X", localtime(int(t))),
       
    40             int(f*100.0), 60, s.strip(),
       
    41             "% %"))
       
    42         current.flush()
       
    43     except (OSError, IOError):
       
    44         pass
       
    45 
       
    46 ##def writelines(lines, level=0):
       
    47 ##    if lines:
       
    48 ##        t = time()
       
    49 ##        f = t-int(t)
       
    50 ##        timedesc = strftime("%x %X", localtime(int(t)))
       
    51 ##        print >> current, "%s.%03d  %-*s %s" % (
       
    52 ##            timedesc, int(f*1000),
       
    53 ##            50-level, lines[0],
       
    54 ##            "+"*level)
       
    55 ##        timedesc = " " * (len(timedesc)+5)
       
    56 ##        for line in lines[1:]:
       
    57 ##            print >> current, timedesc, line
       
    58 
       
    59 def writememory():
       
    60     write("memory usage: %d+ kb" % _psyco.memory(), 1)
       
    61 
       
    62 def dumpcharges():
       
    63     global dump_last
       
    64     if print_charges:
       
    65         t = time()
       
    66         if not (dump_last <= t < dump_last+dump_delay):
       
    67             if t <= dump_last+1.5*dump_delay:
       
    68                 dump_last += dump_delay
       
    69             else:
       
    70                 dump_last = t
       
    71             #write("%s: charges:" % who, 0)
       
    72             lst = _psyco.stattop(print_charges)
       
    73             if lst:
       
    74                 f = t-int(t)
       
    75                 lines = ["%s.%02d   ______\n" % (
       
    76                     strftime("%X", localtime(int(t))),
       
    77                     int(f*100.0))]
       
    78                 i = 1
       
    79                 for co, charge in lst:
       
    80                     detail = co.co_filename
       
    81                     if len(detail) > 19:
       
    82                         detail = '...' + detail[-17:]
       
    83                     lines.append("        #%-3d |%4.1f %%|  %-26s%20s:%d\n" %
       
    84                                  (i, charge*100.0, co.co_name, detail,
       
    85                                   co.co_firstlineno))
       
    86                     i += 1
       
    87                 current.writelines(lines)
       
    88                 current.flush()
       
    89 
       
    90 def writefinalstats():
       
    91     dumpcharges()
       
    92     writememory()
       
    93     writedate("program exit")
       
    94 
       
    95 def writedate(msg):
       
    96     write('%s, %s' % (msg, strftime("%x")), 20)