Python Tracemalloc 模块2024 年 8 月 29 日 | 阅读 15 分钟 在以下教程中,我们将通过一些示例讨论 Python 编程语言的 tracemalloc 模块。 Tracemalloc 是一个从 Python 3.4 版本开始可用的模块,它允许我们监控 Python 代码中的内存分配。它允许我们在特定点拍摄内存快照,对快照执行不同的统计,并执行两个快照之间的差异以检查两个快照之间的对象分配。 以下教程将帮助我们理解 tracemalloc 模块的应用程序编程接口 (API) 的使用,以跟踪 Python 代码中的内存消耗并执行不同的操作。我们还将通过不同的示例了解通过 tracemalloc 模块可用的不同类、方法和属性的用法。 那么,让我们开始吧。 了解 Python tracemalloc 模块tracemalloc 模块是一个调试工具,用于工具 Python 分配的内存块。它提供以下信息
我们必须尽早启动 tracemalloc 模块,以跟踪 Python 编程语言分配的大多数内存块。我们可以通过将 PYTHONTRACEMALLOC 环境变量设置为 1 或借助 -X tracemalloc 命令行选项来实现。可以在运行时调用 tracemalloc 模块的 start() 函数以开始跟踪 Python 内存分配。 默认情况下,分配的内存块的跟踪只存储最近的帧(1 帧)。我们可以通过将 PYTHONTRACEMALLOC 环境变量设置为 25 或使用 -X tracemalloc = 25 命令行选项在启动时存储 25 帧。 现在让我们了解 tracemalloc 模块提供的一些类和方法。 了解 tracemalloc 模块的类和方法
现在我们将通过一些示例了解上述类和方法的用法。 tracemalloc 模块的一些示例 现在让我们考虑一些示例,演示 tracemalloc 模块的类和方法的工作原理。 示例 1在以下示例中,我们将了解 tracemalloc 模块的 start()、take_snapshot() 和 statistics() 方法的用法。 代码 输出 D:\Python_programs\tracOne.py:7: size=583 KiB, count=14994, average=40 B D:\Python_programs\tracOne.py:6: size=528 KiB, count=14984, average=36 B D:\Python_programs\tracOne.py:5: size=522 KiB, count=14745, average=36 B 说明 在上面的代码片段中,我们导入了 tracemalloc 模块。然后,我们使用 start() 方法开始跟踪,然后创建了三个整数列表。然后,我们拍摄了一个内存快照,并打印了该快照从追溯开始收集的追溯列表。 示例 2在以下示例中,我们将了解 format()、get_traceback_limit()、get_object_traceback()、get_object_memory()、get_tracemalloc_memory() 和 is_tracing() 等方法的用法。 代码 输出 ========== THE SNAPSHOT ============= D:\Python_programs\tracTwo.py:8: size=583 KiB, count=14994, average=40 B [' File "D:\\Python_programs\\tracTwo.py", line 8', ' listThree = [n*n*n for n in range(15000)]'] D:\Python_programs\tracTwo.py:7: size=528 KiB, count=14984, average=36 B [' File "D:\\Python_programs\\tracTwo.py", line 7', ' listTwo = [n*n for n in range(15000)]'] D:\Python_programs\tracTwo.py:6: size=522 KiB, count=14744, average=36 B [' File "D:\\Python_programs\\tracTwo.py", line 6', ' listOne = [n for n in range(15000)]'] D:\Python_programs\tracTwo.py:9: size=6544 B, count=3, average=2181 B [' File "D:\\Python_programs\\tracTwo.py", line 9', ' listFour = np.random.randint(1, 150, (1500,))'] <__array_function__ internals>:5: size=528 B, count=1, average=528 B [' File "<__array_function__ internals>", line 5'] C:\Users\khans\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.9_qbz5n2kfra8p0\LocalCache\local-packages\Python39\site-packages\numpy\core\fromnumeric.py:3051: size=520 B, count=1, average=520 B [' File "C:\\Users\\khans\\AppData\\Local\\Packages\\PythonSoftwareFoundation.Python.3.9_qbz5n2kfra8p0\\LocalCache\\local-packages\\Python39\\site-packages\\numpy\\core\\fromnumeric.py", line 3051', " return _wrapreduction(a, np.multiply, 'prod', axis, dtype, out,"] <__array_function__ internals>:4: size=456 B, count=1, average=456 B [' File "<__array_function__ internals>", line 4'] C:\Users\khans\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.9_qbz5n2kfra8p0\LocalCache\local-packages\Python39\site-packages\numpy\core\fromnumeric.py:70: size=440 B, count=1, average=440 B [' File "C:\\Users\\khans\\AppData\\Local\\Packages\\PythonSoftwareFoundation.Python.3.9_qbz5n2kfra8p0\\LocalCache\\local-packages\\Python39\\site-packages\\numpy\\core\\fromnumeric.py", line 70', ' passkwargs = {k: v for k, v in kwargs.items()'] D:\Python_programs\tracTwo.py:11: size=424 B, count=1, average=424 B [' File "D:\\Python_programs\\tracTwo.py", line 11', ' ss = tm.take_snapshot()'] =========== USEFUL METHODS =========== Traceback Limit : 25 Frames Allocation Location for List l4 : D:\Python_programs\tracTwo.py:9 Traced Memory (Current, Peak): (2000444, 2019653) Memory Usage by tracemalloc Module : 2585088 bytes Tracing Status : True 说明 在上面的代码片段中,我们导入了 tracemalloc 模块。然后,我们使用 start() 方法开始跟踪,然后创建了四个整数列表。然后,我们拍摄了一个内存快照,并使用上述方法执行了不同的操作,并以所需的模式返回了信息。 示例 3在以下示例中,我们将了解 stop() 方法以及 clear_traces() 方法的实现。 代码 输出 ================ SNAPSHOT ONE ================= D:\Python_programs\tracThree.py:5: size=51.5 MiB, count=1499745, average=36 B D:\Python_programs\tracThree.py:7: size=583 KiB, count=14994, average=40 B D:\Python_programs\tracThree.py:6: size=528 KiB, count=14984, average=36 B ================ SNAPSHOT 2 ================= D:\Python_programs\tracThree.py:5: size=51.5 MiB, count=1499745, average=36 B D:\Python_programs\tracThree.py:15: size=642 KiB, count=14998, average=44 B D:\Python_programs\tracThree.py:7: size=583 KiB, count=14994, average=40 B D:\Python_programs\tracThree.py:6: size=528 KiB, count=14984, average=36 B C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.9_3.9.3312.0_x64__qbz5n2kfra8p0\lib\tracemalloc.py:226: size=896 B, count=3, average=299 B C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.9_3.9.3312.0_x64__qbz5n2kfra8p0\lib\tracemalloc.py:173: size=816 B, count=2, average=408 B C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.9_3.9.3312.0_x64__qbz5n2kfra8p0\lib\tracemalloc.py:505: size=656 B, count=3, average=219 B C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.9_3.9.3312.0_x64__qbz5n2kfra8p0\lib\tracemalloc.py:423: size=576 B, count=4, average=144 B C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.9_3.9.3312.0_x64__qbz5n2kfra8p0\lib\tracemalloc.py:533: size=576 B, count=1, average=576 B C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.9_3.9.3312.0_x64__qbz5n2kfra8p0\lib\tracemalloc.py:498: size=528 B, count=3, average=176 B C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.9_3.9.3312.0_x64__qbz5n2kfra8p0\lib\tracemalloc.py:560: size=472 B, count=2, average=236 B D:\Python_programs\tracThree.py:12: size=456 B, count=1, average=456 B D:\Python_programs\tracThree.py:13: size=448 B, count=1, average=448 B C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.9_3.9.3312.0_x64__qbz5n2kfra8p0\lib\tracemalloc.py:59: size=440 B, count=1, average=440 B C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.9_3.9.3312.0_x64__qbz5n2kfra8p0\lib\tracemalloc.py:535: size=416 B, count=1, average=416 B C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.9_3.9.3312.0_x64__qbz5n2kfra8p0\lib\tracemalloc.py:207: size=416 B, count=1, average=416 B C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.9_3.9.3312.0_x64__qbz5n2kfra8p0\lib\tracemalloc.py:53: size=416 B, count=1, average=416 B C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.9_3.9.3312.0_x64__qbz5n2kfra8p0\lib\tracemalloc.py:501: size=408 B, count=1, average=408 B C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.9_3.9.3312.0_x64__qbz5n2kfra8p0\lib\tracemalloc.py:499: size=168 B, count=1, average=168 B C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.9_3.9.3312.0_x64__qbz5n2kfra8p0\lib\tracemalloc.py:193: size=144 B, count=3, average=48 B C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.9_3.9.3312.0_x64__qbz5n2kfra8p0\lib\tracemalloc.py:67: size=128 B, count=2, average=64 B C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.9_3.9.3312.0_x64__qbz5n2kfra8p0\lib\tracemalloc.py:315: size=104 B, count=2, average=52 B C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.9_3.9.3312.0_x64__qbz5n2kfra8p0\lib\tracemalloc.py:485: size=64 B, count=1, average=64 B C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.9_3.9.3312.0_x64__qbz5n2kfra8p0\lib\tracemalloc.py:484: size=64 B, count=1, average=64 B C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.9_3.9.3312.0_x64__qbz5n2kfra8p0\lib\tracemalloc.py:54: size=64 B, count=1, average=64 B C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.9_3.9.3312.0_x64__qbz5n2kfra8p0\lib\tracemalloc.py:558: size=56 B, count=1, average=56 B C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.9_3.9.3312.0_x64__qbz5n2kfra8p0\lib\tracemalloc.py:26: size=56 B, count=1, average=56 B C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.9_3.9.3312.0_x64__qbz5n2kfra8p0\lib\tracemalloc.py:212: size=37 B, count=2, average=18 B C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.9_3.9.3312.0_x64__qbz5n2kfra8p0\lib\tracemalloc.py:503: size=28 B, count=1, average=28 B C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.9_3.9.3312.0_x64__qbz5n2kfra8p0\lib\tracemalloc.py:502: size=28 B, count=1, average=28 B C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.9_3.9.3312.0_x64__qbz5n2kfra8p0\lib\tracemalloc.py:58: size=24 B, count=1, average=24 B C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.9_3.9.3312.0_x64__qbz5n2kfra8p0\lib\tracemalloc.py:21: size=24 B, count=1, average=24 B ================ SNAPSHOT 3 ================= D:\Python_programs\tracThree.py:25: size=526 KiB, count=14873, average=36 B Tracing Status : True Tracing Status : False Trying to Take Snapshot After Tracing is Stopped. Exception : the tracemalloc module must be tracing memory allocations to take a snapshot 说明 在上面的代码片段中,我们首先在创建三个整数列表后拍摄了一个快照。然后,我们创建了另一个列表并再次拍摄了快照。然后,我们清除了所有跟踪,这些跟踪是自开始以来创建的四个列表的跟踪。然后,我们创建了第五个列表并再次拍摄了快照。我们还可以从输出中了解到,第三个快照只包含有关创建的第五个列表的信息,并且之前的所有跟踪都已清除。最后,我们还展示了 stop() 方法的用法。 示例 4在以下示例中,我们将了解 dump() 和 load() 方法的实现。 代码 输出 D:\Python_programs\tracFour.py:7: size=583 KiB, count=14994, average=40 B D:\Python_programs\tracFour.py:6: size=528 KiB, count=14984, average=36 B D:\Python_programs\tracFour.py:5: size=522 KiB, count=14745, average=36 B Loaded Snapshot From File : D:\Python_programs\tracFour.py:7: size=583 KiB, count=14994, average=40 B D:\Python_programs\tracFour.py:6: size=528 KiB, count=14984, average=36 B D:\Python_programs\tracFour.py:5: size=522 KiB, count=14745, average=36 B 说明 在上面的代码片段中,我们创建了三个列表并拍摄了一个快照。然后,我们为用户打印了统计信息。然后,我们使用 dump() 方法将跟踪信息存储在 snap.out 文件中。然后,我们使用 load() 方法从 snap.out 文件中加载存储的跟踪信息,并为用户打印了统计信息。 示例 5在以下示例中,我们将通过从 tracemalloc 模块记录的所有跟踪列表中过滤跟踪来了解 DomainFilter 和 Filter 类的实现。 代码 输出 ========== The Original Snapshot =========== D:\Python_programs\tracFive.py:8: size=583 KiB, count=14994, average=40 B D:\Python_programs\tracFive.py:6: size=528 KiB, count=14984, average=36 B D:\Python_programs\tracFive.py:9: size=525 KiB, count=14872, average=36 B D:\Python_programs\tracFive.py:7: size=522 KiB, count=14744, average=36 B D:\Python_programs\tracFive.py:10: size=6544 B, count=3, average=2181 B <__array_function__ internals>:5: size=528 B, count=1, average=528 B C:\Users\khans\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.9_qbz5n2kfra8p0\LocalCache\local-packages\Python39\site-packages\numpy\core\fromnumeric.py:3051: size=520 B, count=1, average=520 B <__array_function__ internals>:4: size=456 B, count=1, average=456 B C:\Users\khans\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.9_qbz5n2kfra8p0\LocalCache\local-packages\Python39\site-packages\numpy\core\fromnumeric.py:70: size=440 B, count=1, average=440 B D:\Python_programs\tracFive.py:12: size=424 B, count=1, average=424 B ========= Filtered Snapshot - One ============= D:\Python_programs\tracFive.py:8: size=583 KiB, count=14994, average=40 B D:\Python_programs\tracFive.py:6: size=528 KiB, count=14984, average=36 B D:\Python_programs\tracFive.py:9: size=525 KiB, count=14872, average=36 B D:\Python_programs\tracFive.py:7: size=522 KiB, count=14744, average=36 B D:\Python_programs\tracFive.py:10: size=544 B, count=2, average=272 B <__array_function__ internals>:5: size=528 B, count=1, average=528 B C:\Users\khans\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.9_qbz5n2kfra8p0\LocalCache\local-packages\Python39\site-packages\numpy\core\fromnumeric.py:3051: size=520 B, count=1, average=520 B <__array_function__ internals>:4: size=456 B, count=1, average=456 B C:\Users\khans\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.9_qbz5n2kfra8p0\LocalCache\local-packages\Python39\site-packages\numpy\core\fromnumeric.py:70: size=440 B, count=1, average=440 B D:\Python_programs\tracFive.py:12: size=424 B, count=1, average=424 B ========= Filtered Snapshot - Two ============= D:\Python_programs\tracFive.py:10: size=6000 B, count=1, average=6000 B ========= Filtered Snapshot - Three ============= ========= Filtered Snapshot - Four ============= D:\Python_programs\tracFive.py:8: size=583 KiB, count=14994, average=40 B D:\Python_programs\tracFive.py:6: size=528 KiB, count=14984, average=36 B D:\Python_programs\tracFive.py:9: size=525 KiB, count=14872, average=36 B D:\Python_programs\tracFive.py:7: size=522 KiB, count=14744, average=36 B D:\Python_programs\tracFive.py:10: size=6544 B, count=3, average=2181 B <__array_function__ internals>:5: size=528 B, count=1, average=528 B C:\Users\khans\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.9_qbz5n2kfra8p0\LocalCache\local-packages\Python39\site-packages\numpy\core\fromnumeric.py:3051: size=520 B, count=1, average=520 B <__array_function__ internals>:4: size=456 B, count=1, average=456 B C:\Users\khans\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.9_qbz5n2kfra8p0\LocalCache\local-packages\Python39\site-packages\numpy\core\fromnumeric.py:70: size=440 B, count=1, average=440 B D:\Python_programs\tracFive.py:12: size=424 B, count=1, average=424 B 说明 在上面的代码片段中,我们了解了过滤器的使用。第一个快照包含 Python 使用的内存块中的所有跟踪。第二个快照包含 Python 创建的内存块的跟踪。这可能是因为 C,因为 NumPy 是基于它构建的。第三个快照包含文件名是 tracFive.py 的条目,第四个快照排除了文件名是 tracFive.py 的条目。 示例 6在以下示例中,我们将了解比较两个快照并使用 compare_to() 方法查找它们之间跟踪差异的方法。 代码 输出 SNAPSHOT - ONE D:\Python_programs\tracSix.py:7: size=583 KiB, count=14994, average=40 B D:\Python_programs\tracSix.py:6: size=528 KiB, count=14984, average=36 B D:\Python_programs\tracSix.py:5: size=522 KiB, count=14745, average=36 B SNAPSHOT - TWO D:\Python_programs\tracSix.py:17: size=645 KiB, count=14998, average=44 B D:\Python_programs\tracSix.py:16: size=642 KiB, count=14998, average=44 B D:\Python_programs\tracSix.py:7: size=583 KiB, count=14994, average=40 B D:\Python_programs\tracSix.py:6: size=528 KiB, count=14984, average=36 B D:\Python_programs\tracSix.py:5: size=522 KiB, count=14745, average=36 B C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.9_3.9.3312.0_x64__qbz5n2kfra8p0\lib\tracemalloc.py:226: size=848 B, count=2, average=424 B C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.9_3.9.3312.0_x64__qbz5n2kfra8p0\lib\tracemalloc.py:173: size=816 B, count=2, average=408 B C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.9_3.9.3312.0_x64__qbz5n2kfra8p0\lib\tracemalloc.py:533: size=576 B, count=1, average=576 B C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.9_3.9.3312.0_x64__qbz5n2kfra8p0\lib\tracemalloc.py:498: size=528 B, count=3, average=176 B C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.9_3.9.3312.0_x64__qbz5n2kfra8p0\lib\tracemalloc.py:423: size=512 B, count=3, average=171 B C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.9_3.9.3312.0_x64__qbz5n2kfra8p0\lib\tracemalloc.py:505: size=488 B, count=2, average=244 B D:\Python_programs\tracSix.py:12: size=456 B, count=1, average=456 B D:\Python_programs\tracSix.py:13: size=448 B, count=1, average=448 B C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.9_3.9.3312.0_x64__qbz5n2kfra8p0\lib\tracemalloc.py:59: size=440 B, count=1, average=440 B C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.9_3.9.3312.0_x64__qbz5n2kfra8p0\lib\tracemalloc.py:535: size=416 B, count=1, average=416 B C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.9_3.9.3312.0_x64__qbz5n2kfra8p0\lib\tracemalloc.py:207: size=416 B, count=1, average=416 B C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.9_3.9.3312.0_x64__qbz5n2kfra8p0\lib\tracemalloc.py:53: size=416 B, count=1, average=416 B C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.9_3.9.3312.0_x64__qbz5n2kfra8p0\lib\tracemalloc.py:501: size=408 B, count=1, average=408 B C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.9_3.9.3312.0_x64__qbz5n2kfra8p0\lib\tracemalloc.py:193: size=144 B, count=3, average=48 B C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.9_3.9.3312.0_x64__qbz5n2kfra8p0\lib\tracemalloc.py:560: size=48 B, count=1, average=48 B C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.9_3.9.3312.0_x64__qbz5n2kfra8p0\lib\tracemalloc.py:315: size=40 B, count=1, average=40 B C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.9_3.9.3312.0_x64__qbz5n2kfra8p0\lib\tracemalloc.py:212: size=37 B, count=2, average=18 B C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.9_3.9.3312.0_x64__qbz5n2kfra8p0\lib\tracemalloc.py:503: size=28 B, count=1, average=28 B C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.9_3.9.3312.0_x64__qbz5n2kfra8p0\lib\tracemalloc.py:502: size=28 B, count=1, average=28 B DIFFERENCE D:\Python_programs\tracSix.py:17: size=645 KiB (+645 KiB), count=14998 (+14998), average=44 B D:\Python_programs\tracSix.py:16: size=642 KiB (+642 KiB), count=14998 (+14998), average=44 B C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.9_3.9.3312.0_x64__qbz5n2kfra8p0\lib\tracemalloc.py:226: size=848 B (+848 B), count=2 (+2), average=424 B C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.9_3.9.3312.0_x64__qbz5n2kfra8p0\lib\tracemalloc.py:173: size=816 B (+816 B), count=2 (+2), average=408 B C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.9_3.9.3312.0_x64__qbz5n2kfra8p0\lib\tracemalloc.py:533: size=576 B (+576 B), count=1 (+1), average=576 B C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.9_3.9.3312.0_x64__qbz5n2kfra8p0\lib\tracemalloc.py:498: size=528 B (+528 B), count=3 (+3), average=176 B C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.9_3.9.3312.0_x64__qbz5n2kfra8p0\lib\tracemalloc.py:423: size=512 B (+512 B), count=3 (+3), average=171 B C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.9_3.9.3312.0_x64__qbz5n2kfra8p0\lib\tracemalloc.py:505: size=488 B (+488 B), count=2 (+2), average=244 B D:\Python_programs\tracSix.py:12: size=456 B (+456 B), count=1 (+1), average=456 B D:\Python_programs\tracSix.py:13: size=448 B (+448 B), count=1 (+1), average=448 B C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.9_3.9.3312.0_x64__qbz5n2kfra8p0\lib\tracemalloc.py:59: size=440 B (+440 B), count=1 (+1), average=440 B C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.9_3.9.3312.0_x64__qbz5n2kfra8p0\lib\tracemalloc.py:535: size=416 B (+416 B), count=1 (+1), average=416 B C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.9_3.9.3312.0_x64__qbz5n2kfra8p0\lib\tracemalloc.py:207: size=416 B (+416 B), count=1 (+1), average=416 B C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.9_3.9.3312.0_x64__qbz5n2kfra8p0\lib\tracemalloc.py:53: size=416 B (+416 B), count=1 (+1), average=416 B C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.9_3.9.3312.0_x64__qbz5n2kfra8p0\lib\tracemalloc.py:501: size=408 B (+408 B), count=1 (+1), average=408 B C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.9_3.9.3312.0_x64__qbz5n2kfra8p0\lib\tracemalloc.py:193: size=144 B (+144 B), count=3 (+3), average=48 B C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.9_3.9.3312.0_x64__qbz5n2kfra8p0\lib\tracemalloc.py:560: size=48 B (+48 B), count=1 (+1), average=48 B C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.9_3.9.3312.0_x64__qbz5n2kfra8p0\lib\tracemalloc.py:315: size=40 B (+40 B), count=1 (+1), average=40 B C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.9_3.9.3312.0_x64__qbz5n2kfra8p0\lib\tracemalloc.py:212: size=37 B (+37 B), count=2 (+2), average=18 B C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.9_3.9.3312.0_x64__qbz5n2kfra8p0\lib\tracemalloc.py:503: size=28 B (+28 B), count=1 (+1), average=28 B C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.9_3.9.3312.0_x64__qbz5n2kfra8p0\lib\tracemalloc.py:502: size=28 B (+28 B), count=1 (+1), average=28 B D:\Python_programs\tracSix.py:7: size=583 KiB (+0 B), count=14994 (+0), average=40 B D:\Python_programs\tracSix.py:6: size=528 KiB (+0 B), count=14984 (+0), average=36 B D:\Python_programs\tracSix.py:5: size=522 KiB (+0 B), count=14745 (+0), average=36 B 说明 在上面的代码片段中,我们创建了三个列表并拍摄了第一个快照。然后,我们为用户打印了统计信息。我们添加了另外两个列表,拍摄了另一个快照,并打印了其统计信息。最后,我们使用 compare_to() 方法找到了两个快照之间的差异,并将其打印给用户。 示例 7以下示例与上一个示例完全相同;但是,唯一的区别是我们将使用过滤器删除与 tracemalloc 模块本身相关的条目。 代码 输出 SNAPSHOT - ONE D:\Python_programs\tracSeven.py:7: size=583 KiB, count=14994, average=40 B D:\Python_programs\tracSeven.py:6: size=528 KiB, count=14984, average=36 B D:\Python_programs\tracSeven.py:5: size=522 KiB, count=14745, average=36 B SNAPSHOT - TWO D:\Python_programs\tracSeven.py:16: size=645 KiB, count=14998, average=44 B D:\Python_programs\tracSeven.py:15: size=642 KiB, count=14998, average=44 B D:\Python_programs\tracSeven.py:7: size=583 KiB, count=14994, average=40 B D:\Python_programs\tracSeven.py:6: size=528 KiB, count=14984, average=36 B D:\Python_programs\tracSeven.py:5: size=522 KiB, count=14745, average=36 B D:\Python_programs\tracSeven.py:12: size=456 B, count=1, average=456 B D:\Python_programs\tracSeven.py:13: size=448 B, count=1, average=448 B DIFFERENCE D:\Python_programs\tracSeven.py:16: size=645 KiB (+645 KiB), count=14998 (+14998), average=44 B D:\Python_programs\tracSeven.py:15: size=642 KiB (+642 KiB), count=14998 (+14998), average=44 B D:\Python_programs\tracSeven.py:12: size=456 B (+456 B), count=1 (+1), average=456 B D:\Python_programs\tracSeven.py:13: size=448 B (+448 B), count=1 (+1), average=448 B D:\Python_programs\tracSeven.py:7: size=583 KiB (+0 B), count=14994 (+0), average=40 B D:\Python_programs\tracSeven.py:6: size=528 KiB (+0 B), count=14984 (+0), average=36 B D:\Python_programs\tracSeven.py:5: size=522 KiB (+0 B), count=14745 (+0), average=36 B 说明 在上面的代码片段中,我们创建了三个列表并拍摄了第一个快照。然后,我们为用户打印了统计信息。我们添加了另外两个列表,拍摄了另一个快照,并打印了其统计信息。然后,我们使用 Filter 类定义了一个过滤器。我们将 tracemalloc 文件名 (tracemalloc.__file__) 指定给 Filter 类的 filename_pattern 属性,并将 inclusive 属性设置为 False 以排除与 tracemalloc 模块相关的条目。最后,我们使用 compare_to() 方法找到了两个快照之间的差异,并将其打印给用户。 |
我们请求您订阅我们的新闻通讯以获取最新更新。