Python gc.garbage() Examples
The following are 30
code examples of gc.garbage().
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example.
You may also want to check out all available functions/classes of the module
gc
, or try the search function
.
Example #1
Source File: b2bua_radius.py From b2bua with BSD 2-Clause "Simplified" License | 7 votes |
def GClector(self): print('GC is invoked, %d calls in map' % len(self.ccmap)) if self.debug_mode: print(self.global_config['_sip_tm'].tclient, self.global_config['_sip_tm'].tserver) for cc in tuple(self.ccmap): try: print(cc.uaA.state, cc.uaO.state) except AttributeError: print(None) else: print('[%d]: %d client, %d server transactions in memory' % \ (os.getpid(), len(self.global_config['_sip_tm'].tclient), len(self.global_config['_sip_tm'].tserver))) if self.safe_restart: if len(self.ccmap) == 0: self.global_config['_sip_tm'].userv.close() os.chdir(self.global_config['_orig_cwd']) argv = [sys.executable,] argv.extend(self.global_config['_orig_argv']) os.execv(sys.executable, argv) # Should not reach this point! self.el.ival = 1 #print gc.collect() if len(gc.garbage) > 0: print(gc.garbage)
Example #2
Source File: test_gc.py From oss-ftp with MIT License | 6 votes |
def test_main(): enabled = gc.isenabled() gc.disable() assert not gc.isenabled() debug = gc.get_debug() gc.set_debug(debug & ~gc.DEBUG_LEAK) # this test is supposed to leak try: gc.collect() # Delete 2nd generation garbage run_unittest(GCTests, GCTogglingTests) finally: gc.set_debug(debug) # test gc.enable() even if GC is disabled by default if verbose: print "restoring automatic collection" # make sure to always test gc.enable() gc.enable() assert gc.isenabled() if not enabled: gc.disable()
Example #3
Source File: test_gc.py From ironpython2 with Apache License 2.0 | 6 votes |
def test_boom2_new(self): class Boom2_New(object): def __init__(self): self.x = 0 def __getattr__(self, someattribute): self.x += 1 if self.x > 1: del self.attr raise AttributeError a = Boom2_New() b = Boom2_New() a.attr = b b.attr = a gc.collect() garbagelen = len(gc.garbage) del a, b self.assertEqual(gc.collect(), 4) self.assertEqual(len(gc.garbage), garbagelen)
Example #4
Source File: test_gc.py From ironpython2 with Apache License 2.0 | 6 votes |
def test_finalizer_newclass(self): # A() is uncollectable if it is part of a cycle, make sure it shows up # in gc.garbage. class A(object): def __del__(self): pass class B(object): pass a = A() a.a = a id_a = id(a) b = B() b.b = b gc.collect() del a del b self.assertNotEqual(gc.collect(), 0) for obj in gc.garbage: if id(obj) == id_a: del obj.a break else: self.fail("didn't find obj in garbage (finalizer)") gc.garbage.remove(obj)
Example #5
Source File: test_gc.py From ironpython2 with Apache License 2.0 | 6 votes |
def test_boom(self): class Boom: def __getattr__(self, someattribute): del self.attr raise AttributeError a = Boom() b = Boom() a.attr = b b.attr = a gc.collect() garbagelen = len(gc.garbage) del a, b # a<->b are in a trash cycle now. Collection will invoke # Boom.__getattr__ (to see whether a and b have __del__ methods), and # __getattr__ deletes the internal "attr" attributes as a side effect. # That causes the trash cycle to get reclaimed via refcounts falling to # 0, thus mutating the trash graph as a side effect of merely asking # whether __del__ exists. This used to (before 2.3b1) crash Python. # Now __getattr__ isn't called. self.assertEqual(gc.collect(), 4) self.assertEqual(len(gc.garbage), garbagelen)
Example #6
Source File: test_gc.py From ironpython2 with Apache License 2.0 | 6 votes |
def test_saveall(self): # Verify that cyclic garbage like lists show up in gc.garbage if the # SAVEALL option is enabled. # First make sure we don't save away other stuff that just happens to # be waiting for collection. gc.collect() # if this fails, someone else created immortal trash self.assertEqual(gc.garbage, []) L = [] L.append(L) id_L = id(L) debug = gc.get_debug() gc.set_debug(debug | gc.DEBUG_SAVEALL) del L gc.collect() gc.set_debug(debug) self.assertEqual(len(gc.garbage), 1) obj = gc.garbage.pop() self.assertEqual(id(obj), id_L)
Example #7
Source File: test_gc.py From ironpython2 with Apache License 2.0 | 6 votes |
def test_boom_new(self): # boom__new and boom2_new are exactly like boom and boom2, except use # new-style classes. class Boom_New(object): def __getattr__(self, someattribute): del self.attr raise AttributeError a = Boom_New() b = Boom_New() a.attr = b b.attr = a gc.collect() garbagelen = len(gc.garbage) del a, b self.assertEqual(gc.collect(), 4) self.assertEqual(len(gc.garbage), garbagelen)
Example #8
Source File: test_gc.py From BinderFilter with MIT License | 6 votes |
def test_boom(self): class Boom: def __getattr__(self, someattribute): del self.attr raise AttributeError a = Boom() b = Boom() a.attr = b b.attr = a gc.collect() garbagelen = len(gc.garbage) del a, b # a<->b are in a trash cycle now. Collection will invoke # Boom.__getattr__ (to see whether a and b have __del__ methods), and # __getattr__ deletes the internal "attr" attributes as a side effect. # That causes the trash cycle to get reclaimed via refcounts falling to # 0, thus mutating the trash graph as a side effect of merely asking # whether __del__ exists. This used to (before 2.3b1) crash Python. # Now __getattr__ isn't called. self.assertEqual(gc.collect(), 4) self.assertEqual(len(gc.garbage), garbagelen)
Example #9
Source File: test_gc.py From BinderFilter with MIT License | 6 votes |
def test_boom_new(self): # boom__new and boom2_new are exactly like boom and boom2, except use # new-style classes. class Boom_New(object): def __getattr__(self, someattribute): del self.attr raise AttributeError a = Boom_New() b = Boom_New() a.attr = b b.attr = a gc.collect() garbagelen = len(gc.garbage) del a, b self.assertEqual(gc.collect(), 4) self.assertEqual(len(gc.garbage), garbagelen)
Example #10
Source File: test_gc.py From BinderFilter with MIT License | 6 votes |
def test_boom2_new(self): class Boom2_New(object): def __init__(self): self.x = 0 def __getattr__(self, someattribute): self.x += 1 if self.x > 1: del self.attr raise AttributeError a = Boom2_New() b = Boom2_New() a.attr = b b.attr = a gc.collect() garbagelen = len(gc.garbage) del a, b self.assertEqual(gc.collect(), 4) self.assertEqual(len(gc.garbage), garbagelen)
Example #11
Source File: test_gc.py From BinderFilter with MIT License | 6 votes |
def test_main(): enabled = gc.isenabled() gc.disable() assert not gc.isenabled() debug = gc.get_debug() gc.set_debug(debug & ~gc.DEBUG_LEAK) # this test is supposed to leak try: gc.collect() # Delete 2nd generation garbage run_unittest(GCTests, GCTogglingTests) finally: gc.set_debug(debug) # test gc.enable() even if GC is disabled by default if verbose: print "restoring automatic collection" # make sure to always test gc.enable() gc.enable() assert gc.isenabled() if not enabled: gc.disable()
Example #12
Source File: test_gc.py From oss-ftp with MIT License | 6 votes |
def test_finalizer(self): # A() is uncollectable if it is part of a cycle, make sure it shows up # in gc.garbage. class A: def __del__(self): pass class B: pass a = A() a.a = a id_a = id(a) b = B() b.b = b gc.collect() del a del b self.assertNotEqual(gc.collect(), 0) for obj in gc.garbage: if id(obj) == id_a: del obj.a break else: self.fail("didn't find obj in garbage (finalizer)") gc.garbage.remove(obj)
Example #13
Source File: test_gc.py From oss-ftp with MIT License | 6 votes |
def test_finalizer_newclass(self): # A() is uncollectable if it is part of a cycle, make sure it shows up # in gc.garbage. class A(object): def __del__(self): pass class B(object): pass a = A() a.a = a id_a = id(a) b = B() b.b = b gc.collect() del a del b self.assertNotEqual(gc.collect(), 0) for obj in gc.garbage: if id(obj) == id_a: del obj.a break else: self.fail("didn't find obj in garbage (finalizer)") gc.garbage.remove(obj)
Example #14
Source File: test_gc.py From oss-ftp with MIT License | 6 votes |
def test_saveall(self): # Verify that cyclic garbage like lists show up in gc.garbage if the # SAVEALL option is enabled. # First make sure we don't save away other stuff that just happens to # be waiting for collection. gc.collect() # if this fails, someone else created immortal trash self.assertEqual(gc.garbage, []) L = [] L.append(L) id_L = id(L) debug = gc.get_debug() gc.set_debug(debug | gc.DEBUG_SAVEALL) del L gc.collect() gc.set_debug(debug) self.assertEqual(len(gc.garbage), 1) obj = gc.garbage.pop() self.assertEqual(id(obj), id_L)
Example #15
Source File: test_gc.py From oss-ftp with MIT License | 6 votes |
def test_boom(self): class Boom: def __getattr__(self, someattribute): del self.attr raise AttributeError a = Boom() b = Boom() a.attr = b b.attr = a gc.collect() garbagelen = len(gc.garbage) del a, b # a<->b are in a trash cycle now. Collection will invoke # Boom.__getattr__ (to see whether a and b have __del__ methods), and # __getattr__ deletes the internal "attr" attributes as a side effect. # That causes the trash cycle to get reclaimed via refcounts falling to # 0, thus mutating the trash graph as a side effect of merely asking # whether __del__ exists. This used to (before 2.3b1) crash Python. # Now __getattr__ isn't called. self.assertEqual(gc.collect(), 4) self.assertEqual(len(gc.garbage), garbagelen)
Example #16
Source File: test_gc.py From oss-ftp with MIT License | 6 votes |
def test_boom_new(self): # boom__new and boom2_new are exactly like boom and boom2, except use # new-style classes. class Boom_New(object): def __getattr__(self, someattribute): del self.attr raise AttributeError a = Boom_New() b = Boom_New() a.attr = b b.attr = a gc.collect() garbagelen = len(gc.garbage) del a, b self.assertEqual(gc.collect(), 4) self.assertEqual(len(gc.garbage), garbagelen)
Example #17
Source File: test_gc.py From oss-ftp with MIT License | 6 votes |
def test_boom2_new(self): class Boom2_New(object): def __init__(self): self.x = 0 def __getattr__(self, someattribute): self.x += 1 if self.x > 1: del self.attr raise AttributeError a = Boom2_New() b = Boom2_New() a.attr = b b.attr = a gc.collect() garbagelen = len(gc.garbage) del a, b self.assertEqual(gc.collect(), 4) self.assertEqual(len(gc.garbage), garbagelen)
Example #18
Source File: test_tests.py From Safejumper-for-Desktop with GNU General Public License v2.0 | 6 votes |
def test_doesntBleed(self): """ Forcing garbage collection in the test should mean that there are no unreachable cycles immediately after the test completes. """ result = reporter.TestResult() self.test1(result) self.flushLoggedErrors() # test1 logs errors that get caught be us. # test1 created unreachable cycle. # it & all others should have been collected by now. if _PY3: n = len(gc.garbage) else: n = gc.collect() self.assertEqual(n, 0, 'unreachable cycle still existed') # check that last gc.collect didn't log more errors x = self.flushLoggedErrors() self.assertEqual(len(x), 0, 'Errors logged after gc.collect')
Example #19
Source File: __init__.py From qubes-core-admin with GNU Lesser General Public License v2.1 | 6 votes |
def cleanup_traceback(self): """Remove local variables reference from tracebacks to allow garbage collector to clean all Qubes*() objects, otherwise file descriptors held by them will leak""" exc_infos = [e for test_case, e in self._outcome.errors if test_case is self] if self._outcome.expectedFailure: exc_infos.append(self._outcome.expectedFailure) for exc_info in exc_infos: if exc_info is None: continue ex = exc_info[1] while ex is not None: if isinstance(ex, qubes.exc.QubesVMError): ex.vm = None traceback.clear_frames(ex.__traceback__) ex = ex.__context__
Example #20
Source File: __init__.py From qubes-core-admin with GNU Lesser General Public License v2.1 | 6 votes |
def cleanup_gc(self): gc.collect() leaked = [obj for obj in gc.get_objects() + gc.garbage if isinstance(obj, (qubes.Qubes, qubes.vm.BaseVM, libvirt.virConnect, libvirt.virDomain))] if leaked: try: import objgraph objgraph.show_backrefs(leaked, max_depth=15, extra_info=extra_info, filename='/tmp/objgraph-{}.png'.format( self.id())) except ImportError: pass # do not keep leaked object references in locals() leaked = bool(leaked) assert not leaked
Example #21
Source File: uncollectible.py From pykit with MIT License | 6 votes |
def test_it(collectible): dd() dd('======= ', ('collectible' if collectible else 'uncollectible'), ' object =======') dd() gc.collect() dd('*** init, nr of referrers: ', len(gc.get_referrers(One))) dd(' garbage: ', gc.garbage) one = One(collectible) dd(' created: ', one.typ, ': ', one) dd(' nr of referrers: ', len(gc.get_referrers(One))) dd(' delete:') del one gc.collect() dd('*** after gc, nr of referrers: ', len(gc.get_referrers(One))) dd(' garbage: ', gc.garbage)
Example #22
Source File: config.py From pycopia with Apache License 2.0 | 6 votes |
def clear(self): if self._eqcache: eqc = self._eqcache self._eqcache = {} while eqc: name, obj = eqc.popitem() try: obj.clear() except: logging.exception_error("environment clear: {!r}".format(obj)) gc.collect() for obj in gc.garbage: try: obj.close() except: logging.exception_warning("environment garbage collect: {!r}".format(obj)) del gc.garbage[:] scheduler.sleep(2) # some devices need time to fully clear or disconnect
Example #23
Source File: test_adbapi2.py From ccs-twistedextensions with Apache License 2.0 | 6 votes |
def test_garbageCollectedTransactionAborts(self): """ When an L{IAsyncTransaction} is garbage collected, it ought to abort itself. """ t = self.createTransaction() self.resultOf(t.execSQL("echo", [])) conns = self.factory.connections self.assertEquals(len(conns), 1) self.assertEquals(conns[0]._rollbackCount, 0) del t gc.collect() self.flushHolders() self.assertEquals(len(conns), 1) self.assertEquals(conns[0]._rollbackCount, 1) self.assertEquals(conns[0]._commitCount, 0)
Example #24
Source File: memoryProfiler.py From armi with Apache License 2.0 | 6 votes |
def countObjects(self, ao): """ Recursively find non-list,dict, tuple objects in containers. Essential for traversing the garbage collector """ itemType = type(ao) counter = self[itemType] if counter.add(ao): self.count += 1 if self.count % 100000 == 0: runLog.info("Counted {} items".format(self.count)) if isinstance(ao, dict): for k, v in ao.items(): self.countObjects(k) self.countObjects(v) elif isinstance(ao, (list, tuple, set)): for v in iter(ao): self.countObjects(v)
Example #25
Source File: test_gc.py From Fluid-Designer with GNU General Public License v3.0 | 6 votes |
def test_legacy_finalizer(self): # A() is uncollectable if it is part of a cycle, make sure it shows up # in gc.garbage. @with_tp_del class A: def __tp_del__(self): pass class B: pass a = A() a.a = a id_a = id(a) b = B() b.b = b gc.collect() del a del b self.assertNotEqual(gc.collect(), 0) for obj in gc.garbage: if id(obj) == id_a: del obj.a break else: self.fail("didn't find obj in garbage (finalizer)") gc.garbage.remove(obj)
Example #26
Source File: test_gc.py From Fluid-Designer with GNU General Public License v3.0 | 6 votes |
def test_legacy_finalizer_newclass(self): # A() is uncollectable if it is part of a cycle, make sure it shows up # in gc.garbage. @with_tp_del class A(object): def __tp_del__(self): pass class B(object): pass a = A() a.a = a id_a = id(a) b = B() b.b = b gc.collect() del a del b self.assertNotEqual(gc.collect(), 0) for obj in gc.garbage: if id(obj) == id_a: del obj.a break else: self.fail("didn't find obj in garbage (finalizer)") gc.garbage.remove(obj)
Example #27
Source File: test_gc.py From Fluid-Designer with GNU General Public License v3.0 | 6 votes |
def test_saveall(self): # Verify that cyclic garbage like lists show up in gc.garbage if the # SAVEALL option is enabled. # First make sure we don't save away other stuff that just happens to # be waiting for collection. gc.collect() # if this fails, someone else created immortal trash self.assertEqual(gc.garbage, []) L = [] L.append(L) id_L = id(L) debug = gc.get_debug() gc.set_debug(debug | gc.DEBUG_SAVEALL) del L gc.collect() gc.set_debug(debug) self.assertEqual(len(gc.garbage), 1) obj = gc.garbage.pop() self.assertEqual(id(obj), id_L)
Example #28
Source File: test_gc.py From Fluid-Designer with GNU General Public License v3.0 | 6 votes |
def test_boom(self): class Boom: def __getattr__(self, someattribute): del self.attr raise AttributeError a = Boom() b = Boom() a.attr = b b.attr = a gc.collect() garbagelen = len(gc.garbage) del a, b # a<->b are in a trash cycle now. Collection will invoke # Boom.__getattr__ (to see whether a and b have __del__ methods), and # __getattr__ deletes the internal "attr" attributes as a side effect. # That causes the trash cycle to get reclaimed via refcounts falling to # 0, thus mutating the trash graph as a side effect of merely asking # whether __del__ exists. This used to (before 2.3b1) crash Python. # Now __getattr__ isn't called. self.assertEqual(gc.collect(), 4) self.assertEqual(len(gc.garbage), garbagelen)
Example #29
Source File: test_gc.py From Fluid-Designer with GNU General Public License v3.0 | 6 votes |
def test_boom_new(self): # boom__new and boom2_new are exactly like boom and boom2, except use # new-style classes. class Boom_New(object): def __getattr__(self, someattribute): del self.attr raise AttributeError a = Boom_New() b = Boom_New() a.attr = b b.attr = a gc.collect() garbagelen = len(gc.garbage) del a, b self.assertEqual(gc.collect(), 4) self.assertEqual(len(gc.garbage), garbagelen)
Example #30
Source File: test_gc.py From Fluid-Designer with GNU General Public License v3.0 | 6 votes |
def test_boom2_new(self): class Boom2_New(object): def __init__(self): self.x = 0 def __getattr__(self, someattribute): self.x += 1 if self.x > 1: del self.attr raise AttributeError a = Boom2_New() b = Boom2_New() a.attr = b b.attr = a gc.collect() garbagelen = len(gc.garbage) del a, b self.assertEqual(gc.collect(), 4) self.assertEqual(len(gc.garbage), garbagelen)