Python 3.6+tracemallocпонятие
tracemalloc.DomainFilter
фильтры
Фильтр трасс по адресному пространству (domain): отделяет память Python от памяти, о которой сообщают C-расширения.
Синтаксис
tracemalloc.DomainFilter(inclusive, domain)
Python-аллокатор пишет всё в домен 0. Расширения вроде NumPy сообщают о своих буферах через C API в собственный домен, и в снимке такие трассы смешаны с обычными. DomainFilter(False, 0) оставляет только «чужую» память, DomainFilter(True, 0) — только память Python. В отличие от Filter, имя файла не проверяется. Появился в 3.6.
Примеры
import tracemalloc
tracemalloc.start()
data = bytes(10_000)
snap = tracemalloc.take_snapshot()
python_only = snap.filter_traces([tracemalloc.DomainFilter(True, 0)])
foreign = snap.filter_traces([tracemalloc.DomainFilter(False, 0)])
print(len(python_only.traces) > 0, len(foreign.traces)) # → True 0
tracemalloc.stop()
См. также
Открыть в полном глоссарииdocs.python.orgСообщить о неточности