您尚未登录。

楼主 # 2025-03-07 15:00:30

coollofty
会员
注册时间: 2025-02-07
已发帖子: 10
积分: 110

引入一个.a模块运行一段时间之后,如何完整的卸载这个模块及所有相关占用?

因为我的程序会在运行过程中根据情况载入多个.a库,可以理解为一个.a就是一个app,运行一段时间之后这个app退出了,我就需要完整的卸载这个.a库以及其运行过程中所有占用的内存等资源。python代码里可能会忘记处理某些东西,但是我能否强制卸载掉?

原来我的方案是想创建两个python对象,一个负责主程序,这个是全局一直存在的。另一个负责一些后来运行的代码,就像app一样,运行完了我可以销毁整个python引擎,这样应该是最好的。但是我看代码里有很多全局变量,这样做估计是不现实吧?所以只能想着上面那个方案,能否整体卸载了

离线

#1 2025-03-08 17:28:04

lyon1998
Moderator
注册时间: 2021-12-01
已发帖子: 134
积分: 155

Re: 引入一个.a模块运行一段时间之后,如何完整的卸载这个模块及所有相关占用?

是的,跑两个根对象是不可行的,还有一些共享资源比如内存管理需要加锁才行。

obj_deinit(根对象) 在不开多线程的时候可以基本是卸载完毕,但是多线程还是有可能卸载失败的

完全卸载.a有点困难,尤其是在多线程和带有事件回调的时候,我还是建议你完全重启硬件再加载另一个.a

如果你跑多个任务,那建议你用 _thread 模块跑多线程

离线

#2 2025-03-08 17:36:01

lyon1998
Moderator
注册时间: 2021-12-01
已发帖子: 134
积分: 155

Re: 引入一个.a模块运行一段时间之后,如何完整的卸载这个模块及所有相关占用?

顺便恭喜你发现.a可以当作app来用

离线

页脚

工信部备案:粤ICP备20025096号 Powered by FluxBB

感谢为中文互联网持续输出优质内容的各位老铁们。 QQ: 516333132, 微信(wechat): whycan_cn (哇酷网/挖坑网/填坑网) service@whycan.cn