Python sys.getallocatedblocks() Examples
The following are 8
code examples of sys.getallocatedblocks().
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
sys
, or try the search function
.
Example #1
Source File: customize.py From llvmlite with BSD 2-Clause "Simplified" License | 6 votes |
def _refleak_cleanup(): # Collect cyclic trash and read memory statistics immediately after. try: func1 = sys.getallocatedblocks except AttributeError: def func1(): return 42 try: func2 = sys.gettotalrefcount except AttributeError: def func2(): return 42 # Flush standard output, so that buffered data is sent to the OS and # associated Python objects are reclaimed. for stream in (sys.stdout, sys.stderr, sys.__stdout__, sys.__stderr__): if stream is not None: stream.flush() sys._clear_type_cache() # This also clears the various internal CPython freelists. gc.collect() return func1(), func2()
Example #2
Source File: pool.py From python-pool-performance with MIT License | 5 votes |
def _run_test(self, work_func: FunctionType, work_resource: object, jobs: int, trials: int, show_progress: bool=False) -> Mapping: results = { 'jobs': jobs, 'trials': trials, 'time': [], 'blocks': [], } # Forcibly evaluate the inputs to prevent time/resources taken up later inputs = list(zip( [work_resource] * jobs, range(jobs) )) trial_iter = range(trials) if show_progress is True and trials > 2: trial_iter = tqdm(trial_iter, desc='trials') gc.collect() for _ in trial_iter: # Run trial of pool map function and measure it gc.collect() blocks_start = sys.getallocatedblocks() time_start = time.time() list(self.map(work_func, inputs)) time_end = time.time() results['time'].append(time_end - time_start) # Get allocated blocks before garbage collection to show peak usage blocks_end = sys.getallocatedblocks() results['blocks'].append(blocks_end - blocks_start) return results
Example #3
Source File: test_sys.py From Fluid-Designer with GNU General Public License v3.0 | 5 votes |
def test_getallocatedblocks(self): # Some sanity checks with_pymalloc = sysconfig.get_config_var('WITH_PYMALLOC') a = sys.getallocatedblocks() self.assertIs(type(a), int) if with_pymalloc: self.assertGreater(a, 0) else: # When WITH_PYMALLOC isn't available, we don't know anything # about the underlying implementation: the function might # return 0 or something greater. self.assertGreaterEqual(a, 0) try: # While we could imagine a Python session where the number of # multiple buffer objects would exceed the sharing of references, # it is unlikely to happen in a normal test run. self.assertLess(a, sys.gettotalrefcount()) except AttributeError: # gettotalrefcount() not available pass gc.collect() b = sys.getallocatedblocks() self.assertLessEqual(b, a) gc.collect() c = sys.getallocatedblocks() self.assertIn(c, range(b - 50, b + 50))
Example #4
Source File: test_sys.py From ironpython3 with Apache License 2.0 | 5 votes |
def test_getallocatedblocks(self): # Some sanity checks with_pymalloc = sysconfig.get_config_var('WITH_PYMALLOC') a = sys.getallocatedblocks() self.assertIs(type(a), int) if with_pymalloc: self.assertGreater(a, 0) else: # When WITH_PYMALLOC isn't available, we don't know anything # about the underlying implementation: the function might # return 0 or something greater. self.assertGreaterEqual(a, 0) try: # While we could imagine a Python session where the number of # multiple buffer objects would exceed the sharing of references, # it is unlikely to happen in a normal test run. self.assertLess(a, sys.gettotalrefcount()) except AttributeError: # gettotalrefcount() not available pass gc.collect() b = sys.getallocatedblocks() self.assertLessEqual(b, a) gc.collect() c = sys.getallocatedblocks() self.assertIn(c, range(b - 50, b + 50))
Example #5
Source File: test_sys.py From Project-New-Reign---Nemesis-Main with GNU General Public License v3.0 | 5 votes |
def test_getallocatedblocks(self): # Some sanity checks with_pymalloc = sysconfig.get_config_var('WITH_PYMALLOC') a = sys.getallocatedblocks() self.assertIs(type(a), int) if with_pymalloc: self.assertGreater(a, 0) else: # When WITH_PYMALLOC isn't available, we don't know anything # about the underlying implementation: the function might # return 0 or something greater. self.assertGreaterEqual(a, 0) try: # While we could imagine a Python session where the number of # multiple buffer objects would exceed the sharing of references, # it is unlikely to happen in a normal test run. self.assertLess(a, sys.gettotalrefcount()) except AttributeError: # gettotalrefcount() not available pass gc.collect() b = sys.getallocatedblocks() self.assertLessEqual(b, a) gc.collect() c = sys.getallocatedblocks() self.assertIn(c, range(b - 50, b + 50))
Example #6
Source File: refleak.py From android_universal with MIT License | 5 votes |
def dash_R_cleanup(fs, ps, pic, zdc, abcs): import gc, copyreg import collections.abc # Restore some original values. warnings.filters[:] = fs copyreg.dispatch_table.clear() copyreg.dispatch_table.update(ps) sys.path_importer_cache.clear() sys.path_importer_cache.update(pic) try: import zipimport except ImportError: pass # Run unmodified on platforms without zipimport support else: zipimport._zip_directory_cache.clear() zipimport._zip_directory_cache.update(zdc) # clear type cache sys._clear_type_cache() # Clear ABC registries, restoring previously saved ABC registries. abs_classes = [getattr(collections.abc, a) for a in collections.abc.__all__] abs_classes = filter(isabstract, abs_classes) for abc in abs_classes: for obj in abc.__subclasses__() + [abc]: for ref in abcs.get(obj, set()): if ref() is not None: obj.register(ref()) obj._abc_caches_clear() clear_caches() # Collect cyclic trash and read memory statistics immediately after. func1 = sys.getallocatedblocks func2 = sys.gettotalrefcount gc.collect() return func1(), func2(), support.fd_count()
Example #7
Source File: customize.py From llvmlite with BSD 2-Clause "Simplified" License | 5 votes |
def _huntLeaks(self, test): self.stream.flush() repcount = self.repetitions nwarmup = self.warmup rc_deltas = [0] * (repcount - nwarmup) alloc_deltas = [0] * (repcount - nwarmup) # Preallocate ints likely to be stored in rc_deltas and alloc_deltas, # to make sys.getallocatedblocks() less flaky. _int_pool = IntPool() for i in range(-200, 200): _int_pool[i] alloc_before = rc_before = 0 for i in range(repcount): # Use a pristine, silent result object to avoid recursion res = result.TestResult() test.run(res) # Poorly-written tests may fail when run several times. # In this case, abort the refleak run and report the failure. if not res.wasSuccessful(): self.failures.extend(res.failures) self.errors.extend(res.errors) raise AssertionError del res alloc_after, rc_after = _refleak_cleanup() if i >= nwarmup: rc_deltas[i - nwarmup] = _int_pool[rc_after - rc_before] alloc_deltas[i - nwarmup] = _int_pool[alloc_after - alloc_before] alloc_before, rc_before = alloc_after, rc_after return rc_deltas, alloc_deltas
Example #8
Source File: regrtest.py From Project-New-Reign---Nemesis-Main with GNU General Public License v3.0 | 4 votes |
def dash_R_cleanup(fs, ps, pic, zdc, abcs): import gc, copyreg import collections.abc from weakref import WeakSet # Restore some original values. warnings.filters[:] = fs copyreg.dispatch_table.clear() copyreg.dispatch_table.update(ps) sys.path_importer_cache.clear() sys.path_importer_cache.update(pic) try: import zipimport except ImportError: pass # Run unmodified on platforms without zipimport support else: zipimport._zip_directory_cache.clear() zipimport._zip_directory_cache.update(zdc) # clear type cache sys._clear_type_cache() # Clear ABC registries, restoring previously saved ABC registries. abs_classes = [getattr(collections.abc, a) for a in collections.abc.__all__] abs_classes = filter(isabstract, abs_classes) if 'typing' in sys.modules: t = sys.modules['typing'] # these classes require special treatment because they do not appear # in direct subclasses on collections.abc classes abs_classes = list(abs_classes) + [t.ChainMap, t.Counter, t.DefaultDict] for abc in abs_classes: for obj in abc.__subclasses__() + [abc]: obj._abc_registry = abcs.get(obj, WeakSet()).copy() obj._abc_cache.clear() obj._abc_negative_cache.clear() clear_caches() # Collect cyclic trash and read memory statistics immediately after. func1 = sys.getallocatedblocks func2 = sys.gettotalrefcount gc.collect() return func1(), func2()