January 30, 2026
PikaStdLib 示例
本文档介绍 PikaStdLib 中的内存检查(MemChecker)及系统对象用法。示例参考:doc/pikapython.com/examples/ 中多处 MemChecker 用法及 builtins/write_issue.py、Class/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/getMax与now/max等具体方法名以设备固件和 PikaStdLib 版本为准,请以实际 API 为准。- 内存单位为平台定义(常见为 kB),可用于相对比较,不宜依赖绝对值。