控制python导入以减少大小和开销
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了控制python导入以减少大小和开销,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1510字,纯文字阅读大概需要3分钟。
内容图文
我创建了许多个人库来帮助我进行日常编码.最佳做法是将导入放在python程序的开头.但是说我导入我的库,甚至只是从库中导入一个函数或类.导入所有模块(即使这些模块用于其他未使用的类或函数).我认为这增加了程序的开销?
一个例子.我有一个名为pytools的库,看起来像这样
import difflib
def foo():
# uses difflib.SequenceMatcher
def bar():
# benign function ie
print "Hello!"
return True
class foobar:
def __init__():
print "New foobar"
def ret_true():
return True
函数foo使用difflib.现在说我正在编写一个需要使用bar和foobar的新程序.我可以写
import pytools
...
item = pytools.foobar()
vals = pytools.bar()
或者我能做到
from pytools import foobar, bar
...
item = foobar()
vals = bar()
这两种选择是否可以减少开销或排除foo及其对difflib的依赖性的导入?如果导入difflib是在foo函数内部怎么办?
我遇到的问题是将简单程序转换为仅使用我的库中的一个或两个类或函数的可执行文件时,可执行文件最终为50 MB左右.
我已经阅读了py2exe的优化大小页面,并可以使用它的一些建议进行优化.
http://www.py2exe.org/index.cgi/OptimizingSize
我想我真的在这里要求最佳实践.有没有办法阻止导入依赖于未使用的函数或类的库?我已经看过使用调试器执行import语句,看起来python只是在继续之前用“def somefunction”“拾取”该行.在使用函数/类之前,导入的其余部分是否未完成?这意味着在函数或类的开头放置高容量导入可以减少库的其余部分的开销.
解决方法:
有效减少依赖关系的唯一方法是将工具箱拆分为较小的模块,并仅导入所需的模块.
将导入放在未使用的函数的开头将阻止在运行时加载这些模块,但不鼓励它隐藏依赖项.此外,您的Python到可执行转换器可能还需要包含这些模块,因为Python的动态特性使得无法静态地确定实际调用哪些函数.
内容总结
以上是互联网集市为您收集整理的控制python导入以减少大小和开销全部内容,希望文章能够帮你解决控制python导入以减少大小和开销所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。