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