返回介绍

A.3 第9章:有或没有 __slots__ 时 RAM 的用量

发布于 2024-02-05 21:59:46 字数 950 浏览 0 评论 0 收藏 0

memtest.py 脚本用于支持 9.8 节的一个演示——示例 9-12。

memtest.py 脚本从命令行中接收一个模块的名称,加载那个模块。假设模块中定义有一个名为 Vector 的类,memtest.py 脚本会创建一个由一千万个实例组成的列表,然后报告创建列表前后内存的用量。

示例 A-4 memtest.py:创建大量 Vector 实例,报告内存用量

import importlib
import sys
import resource

NUM_VECTORS = 10**7

if len(sys.argv) == 2:
  module_name = sys.argv[1].replace('.py', '')
  module = importlib.import_module(module_name)
else:
  print('Usage: {} <vector-module-to-test>'.format())
  sys.exit(1)

fmt = 'Selected Vector2d type: {.__name__}.{.__name__}'
print(fmt.format(module, module.Vector2d))

mem_init = resource.getrusage(resource.RUSAGE_SELF).ru_maxrss
print('Creating {:,} Vector2d instances'.format(NUM_VECTORS))

vectors = [module.Vector2d(3.0, 4.0) for i in range(NUM_VECTORS)]

mem_final = resource.getrusage(resource.RUSAGE_SELF).ru_maxrss
print('Initial RAM usage: {:14,}'.format(mem_init))
print('  Final RAM usage: {:14,}'.format(mem_final))

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文