PikaStdLib 示例

January 30, 2026

PikaStdLib 示例

本文档介绍 PikaStdLib 中的内存检查(MemChecker)及系统对象用法。示例参考:doc/pikapython.com/examples/ 中多处 MemChecker 用法及 builtins/write_issue.pyClass/main.py

模块简介

PikaStdLib 提供内存监控与系统级功能。内嵌示例:

import PikaStdLib
mem = PikaStdLib.MemChecker()
mem.now()   # 当前内存(若支持)
mem.max()   # 最大内存(若支持)

或使用 getNow()/getMax()(以实际 API 为准):

from PikaStdLib import MemChecker as mem
m = mem().getNow()
# 执行一段操作后
m2 = mem().getNow()
print('mem: ', m2 - m)

API 概览

  • MemChecker():创建内存检查对象。
  • getNow() / now():获取当前内存占用(单位视平台而定,如 kB)。
  • getMax() / max():获取运行以来最大内存占用。

示例代码

内存监控(write_issue 节选)

from PikaStdLib import MemChecker as mem
a = open(".test.py", "wb")
m0 = mem().getNow()
for i in range(1000):
    n = a.write(b'# print(r_data[0])\n# print(r_data[1])\n\n# import _thread\n# import')

assert n == 64
m1 = mem().getNow()
for i in range(1000):
    n = a.write(b'import osTimer33332 cnt=0332 cnt1=033332 def test_cb(arg):332global cnt332cnt+=1332123123123123231231')

assert n == 101
m2 = mem().getNow()
a.close()
print('PASS')
print('mem: ', m2 - m0)

说明:在循环写入前后调用 getNow(),用差值观察该段代码对内存的影响。

继承 MemChecker 扩展(Class/main.py 节选)

import PikaStdLib

class mymem(PikaStdLib.MemChecker):
    def mymax(self):
        print('mem used max: ' + str(self.getMax()) + ' kB')

mem = mymem()
mem.mymax()

说明:子类继承 MemChecker 并封装 getMax(),便于在脚本中统一查看最大内存。

注意事项

  • getNow/getMaxnow/max 等具体方法名以设备固件和 PikaStdLib 版本为准,请以实际 API 为准。
  • 内存单位为平台定义(常见为 kB),可用于相对比较,不宜依赖绝对值。

相关链接