首页 / PYTHON / 在python中延迟加载模块
在python中延迟加载模块
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了在python中延迟加载模块,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1600字,纯文字阅读大概需要3分钟。
内容图文
![在python中延迟加载模块](/upload/InfoBanner/zyjiaocheng/825/7ef277ebf8a4457f80b604808a325c51.jpg)
我正在编写一个用于从科学仪器获取数据的python applet,我正试图找出管理设备“驱动程序”的最佳方法.
每个驱动程序都由程序包中的一个单独的python模块表示.它们每个都实现了一些标准接口,但主要是它是一个巨大的命令列表(和函数映射),它们特定于每个设备和总线.从长远来看,(我正在为我的实验室小组写这篇文章并计划支持几十台设备)我想避免立即加载所有这些设备.相反,在运行时,我想将模块列表读入字典/列表,然后仅在实际需要时才加载它们.
当用户想要使用新设备时,他选择要使用的驱动程序,并将名称传递给驱动子系统,然后驱动子系统检查该驱动程序是否在加载模块列表中,如果不是,则调用__import__函数并加载驱动程序然后使用驱动程序实例化设备对象并将其交还给用户使用.
我的问题是:以相对方式获取所有模块列表的最佳方法是什么?我的意思是,如果我知道驱动程序位于..驱动程序中有没有办法在该子程序中获得一个整齐的模块列表?为了说明:通常我只是从..drivers导入driver_name来调用导入模块,但由于我不能保证在包目录中,所以不能只是我们获取模块名称列表.
在任何情况下,任何想法(甚至可能是一个更好的方式来实现我想要的 – 可加载的“驱动程序”)将不胜感激.
解决方法:
如果已知驱动程序包的位置,则可以使用驱动程序文件夹的绝对路径.
我认为更强大的方法是为您的程序提供所有已知驱动程序的列表,可能还有一些元数据,以便用户可以更轻松地选择它们.如果您知道可能的位置,您可以让司机自行注册,或自己注册.让驱动程序自己注册的一个优点是你可能在驱动程序包目录中有驱动程序以外的python文件.
编辑
对于“注册自己”的驱动程序,您可能会执行以下操作:
if __name__ == "__main__":
import mamapackage
mamapackage.register("thisdriver",
os.path.abspath(__file__),
"A description of this driver")
然后在您自己的包中,提供一个“注册”功能,用于更新驱动程序列表及其位置和描述(一个简单的文本文件应该为初学者做).
内容总结
以上是互联网集市为您收集整理的在python中延迟加载模块全部内容,希望文章能够帮你解决在python中延迟加载模块所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。