示例#1
0
        def profiler(*args, **kwargs):
            nonlocal log_level
            log_level = log_level or (logging.TRACE if hasattr(logging, 'TRACE') else logging.DEBUG)
            if not logger.isEnabledFor(log_level):
                return fn(*args, **kwargs)

            name = fn_name(fn)
            with MemoryProfiler(enabled=memory) as m:
                if memory:
                    mem = m.usage(before=True)
                    logger.log(log_level,
                               "[PROFILING] `%s`\n"
                               "memory before; resident: %.2f MB, virtual: %.2f MB, unique: %.2f MB.\n"
                               "gc before; threshold: %s, gen_count: %s, perm_count: %s",
                               name,
                               mem.resident, mem.virtual, mem.unique,
                               gc.get_threshold(), gc.get_count(), gc.get_freeze_count())
                with Timer(enabled=duration) as t:
                    ret = fn(*args, **kwargs)
            if duration:
                logger.log(log_level, "[PROFILING] `%s` executed in %.3fs.", name, t.duration)
            if memory:
                ret_size = obj_size(ret)
                if ret_size > 0:
                    logger.log(log_level, "[PROFILING] `%s` returned object size: %.3f MB.", name, to_mb(ret_size))
                mem = m.usage()
                logger.log(log_level,
                           "[PROFILING] `%s`\n"
                           "memory after; resident: %+.2f MB/%.2f MB, virtual: %+.2f MB/%.2f MB, unique: %+.2f MB/%.2f MB.\n"
                           "gc after; threshold: %s, gen_count: %s, perm_count: %s",
                           name,
                           mem.resident_diff, mem.resident, mem.virtual_diff, mem.virtual, mem.unique_diff, mem.unique,
                           gc.get_threshold(), gc.get_count(), gc.get_freeze_count())
            return ret
示例#2
0
def f4():
    '''垃圾自动回收'''
    print(gc.get_count())     #回收计数
    # print(gc.get_objects()) #收集器所追踪的所有对象列表
    print(gc.get_stats())     #回收统计
    print(gc.get_threshold()) #回收阈值


    a=A()
    print(gc.get_count())
    # print(gc.get_objects())
    print(gc.get_stats())
    print(gc.get_threshold())


    del a
    print(gc.get_count())
    # print(gc.get_objects())
    print(gc.get_stats())
    print(gc.get_threshold())
    print(gc.get_freeze_count())
示例#3
0
 def test_freeze(self):
     gc.freeze()
     self.assertGreater(gc.get_freeze_count(), 0)
     gc.unfreeze()
     self.assertEqual(gc.get_freeze_count(), 0)
示例#4
0
 def test_get_frozen_heap(self):
     gc.freeze()
     self.assertEqual(gc.get_freeze_count(), len(gc.get_frozen_objects()))
     gc.unfreeze()
示例#5
0
 def test_freeze(self):
     gc.freeze()
     self.assertGreater(gc.get_freeze_count(), 0)
     gc.unfreeze()
     self.assertEqual(gc.get_freeze_count(), 0)
示例#6
0
def print_object_count(_connection=None):
    total_count = gc.get_num_objects()
    freeze_count = gc.get_freeze_count()
    gc_output('Object count: {}, Freeze count: {}', total_count, freeze_count)