iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Python 代码精简和优化
  • 494
分享到

Python 代码精简和优化

代码Python 2023-01-31 06:01:57 494人浏览 安东尼

Python 官方文档:入门教程 => 点击学习

摘要

python很简单,容易使用,开发效率很高,移植性很好,代码资源也很丰富,被广泛使用。但是Python代码编出来的动态库比较大,python库很全,缺点就是库比较大。 在内存占用方法,随着py库的引入,内存也成倍的增加,这里来讨论下如何来

python很简单,容易使用,开发效率很高,移植性很好,代码资源也很丰富,被广泛使用。但是Python代码编出来的动态库比较大,python库很全,缺点就是库比较大。

在内存占用方法,随着py库的引入,内存也成倍的增加,这里来讨论下如何来给Python瘦身,以及如何优化内存的占用。


一、如何给Python的动态库瘦身。

Python的代码还是很精练的,所以要减小小代码的大小比较困难,但是仍然有一些思路来减小Python库的大小。

1、strip python动态库。

动态库一般都是包含符号表,这些在调用的时候很有用,但是对于release版本,完全可以把符号表去调,方法就是用strip命令,这样大小可以从八九兆锐减到3兆以内。

2、使用代码优化选项:-O3,该参数会对代码进行最大程度的优化,包括优化生成的二进制代码的大小,缺点是优化后会对调试带来困难。

3、去除代码中的Doc String.

Python的代码里有用PyDoc_STRVAR宏定义的模块的帮助说明,这些是可以去掉的,方法是在configure的时候指定--without-doc-strings,这样生成的pyconfig.h中就会不会有下面的定义:

#define WITH_DOC_STRINGS 1

这可以减小生成的动态库的大小,当然在运行时也可以减小模块的内存的占用,因为这些模块不再包含帮助信息。

4、去掉unicode支持。

python中unicode支持不是必需的,当然python 3另当别论。python中要支持unicode可以采用utf-8编码的方式。去掉unicode的支持可以在configure的时候使用下面的参数:

--enable-unicode=no

这样,在pyconfig.h中会去掉下面的定义:

#define Py_USING_UNICODE 1


二:如何减小Python的扩展库的大小?


Python的扩展库放在lib目录下,可以在lib目录下执行下面的命令来编译Python代码:

python -OO -m compileall .

这样会生成pyo扩展名的库文件,-OO参数会去掉doc string,这样在py文件中注释比较多的时候可以显著减小编译目标文件的大小。

注意不要使用绝对路径:

如python -OO -m compileall /path/to/python/lib 这样使用绝对路径的命令,因为生成pyo文件的时候,,每个函数和类的方法会生成一个一个的code object对象,每个code object都会保存它所在的模块的路径,如果使用绝对路径,在路径比较长的时候,函数又比较多的时候,很显著的增加pyo文件的大小。

当然,在代码运行时,也可以减小内存的占用量。


三、如何裁减扩展库。

有个py2exe的工具可以打包python代码和依赖的动态库,把python所必须的扩展库打包到zip文件中,但是实际上这个zip包往往并不是最精简的。其实裁减的最大难点是要找出所有依赖的模块,可以用下面的方法来找出某个模块所依赖的其它模块:


import importlib
def module_diff(mod):
    import sys
    keys = []
    for key in sys.modules.keys():
        keys.append(key)
    importlib.import_module(mod)
    for key in sys.modules.keys():
        if not key in keys:
            print key,sys.modules[key]

如要查看multiprocessing模块所依赖的模块,可以用下面的命令:


module_diff('multiprocessing')


将会得到下面的输出:

multiprocessing.atexit None
multiprocessing.weakref None
multiprocessing.signal None
threading <module 'threading' from 'C:\Python27\lib\threading.pyc'>
cPickle <module 'cPickle' (built-in)>
_multiprocessing <module '_multiprocessing' from 'C:\Python27\DLLs\_multiprocessing.pyd'>
multiprocessing.os None
multiprocessing.itertools None
multiprocessing.threading None
multiprocessing.util <module 'multiprocessing.util' from 'C:\Python27\lib\multiprocessing\util.pyc'>
multiprocessing.sys None
cStringio <module 'cStringIO' (built-in)>
multiprocessing._multiprocessing None
multiprocessing.multiprocessing None
thread <module 'thread' (built-in)>
atexit <module 'atexit' from 'C:\Python27\lib\atexit.pyc'>
multiprocessing <module 'multiprocessing' from 'C:\Python27\lib\multiprocessing\__init__.pyc'>
weakref <module 'weakref' from 'C:\Python27\lib\weakref.pyc'>
itertools <module 'itertools' (built-in)>
time <module 'time' (built-in)>
multiprocessing.process <module 'multiprocessing.process' from 'C:\Python27\lib\multiprocessing\process.pyc'


这样就可以知道所依赖的模块了。

 要查看所有的模块,则更简单:

def print_all_module():
    import sys
    keys = []
    for key in sys.modules.keys():
        print key,sys.modules[key]

在代码初始化完后执行上面的函数,就可以知道程序运行所需的模块了。


--结束END--

本文标题: Python 代码精简和优化

本文链接: https://www.lsjlt.com/news/190166.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Python 代码精简和优化
    Python很简单,容易使用,开发效率很高,移植性很好,代码资源也很丰富,被广泛使用。但是Python代码编出来的动态库比较大,python库很全,缺点就是库比较大。 在内存占用方法,随着py库的引入,内存也成倍的增加,这里来讨论下如何来...
    99+
    2023-01-31
    代码 Python
  • 精简代码结构:Go语言去除else优化技巧分享
    Go语言在编写代码时,很多情况下都会用到if-else语句来进行条件判断。然而,在某些情况下,我们可以优化代码结构,去除else关键字,使得代码更为简洁和易读。下面分享一些去除else...
    99+
    2024-03-12
    优化代码 精简结构 去除else go语言
  • Python代码性能优化
    Python性能优化的一般步骤: 步骤1:找到性能 瓶颈 步骤2:优化性能 瓶颈 步骤3:goto 『步骤1』 找出瓶颈 不要相信直觉,使用专业工具 使用专业工具: profile / cprofil...
    99+
    2023-01-31
    性能 代码 Python
  • 如何优化Python代码
    如何优化Python代码,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。优化是什么首先定义什么是优化。我们将使用一个直观的示例进行此操作。这是我们的问题:假设给定一个数组,其...
    99+
    2023-06-16
  • 有哪些JS精简代码
    这篇文章主要介绍“有哪些JS精简代码”,在日常操作中,相信很多人在有哪些JS精简代码问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”有哪些JS精简代码”的疑惑有所帮助!接下来,...
    99+
    2024-04-02
  • Python 代码优化技巧(一)
    分享最近看到的关于代码优化的一些技巧。 if 判断的短路特性 对于and,应该把满足条件少的放在前面,这样当对于大量判断时, 满足条件少的情况直接回导致其后其他表达式不会计算从而节约时间(因为 False and True 还是 Fa...
    99+
    2023-01-31
    代码 技巧 Python
  • HTML 空元素:简化代码,优化网站体验
    HTML 空元素简介 HTML 空元素是没有结束标签的特殊元素。它们通常用于创建不可见元素,例如水平线或强制换行。在 HTML5 中,有 12 个指定的空元素,包括 area、base、br、col、embed、hr、img、input...
    99+
    2024-03-03
    HTML 空元素、简化代码、优化网站体验、SEO
  • 优化 Python 代码性能:从算法选择到代码优化技巧
    一、算法选择 算法选择对 Python 代码的性能有重大影响。在选择算法时,需要考虑算法的复杂度、空间消耗和适用场景。常见的算法包括: 排序算法:冒泡排序、快速排序、归并排序、堆排序等。 搜索算法:二分查找、深度优先搜索、广度优...
    99+
    2024-02-06
    Python 性能优化 算法选择 数据结构选择 代码优化 并行计算
  • python 代码检查,实现行级代码优化
        有时候运行一个python程序,它需要运行很长时间。你或许想提升该程序的运行效率。那该怎么做那?     首先需要你要找到该程序瓶颈在哪里~   比如,哪个函数的运行花费时间比较长? 哪个函数占用内存比较多,是否需要优化对内存的使用...
    99+
    2023-01-31
    代码 python
  • 如何让JavaScript代码更加精简
    这篇文章主要介绍“如何让JavaScript代码更加精简”,在日常操作中,相信很多人在如何让JavaScript代码更加精简问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”如何让JavaScript代码更加精简...
    99+
    2023-06-30
  • Python 代码性能优化技巧
    1. Vim2. Eclipse with PyDev3. Sublime Text4. Emacs5. Komodo Edit6. PyCharm7. Wing8. PyScripter9. The Eric Python IDE10. ...
    99+
    2023-01-31
    性能 代码 技巧
  • python代码优化案例分析
    第一版举例:def displayNumType(num):     print num,"is",     if type(num)==type(0):         print 'an interger'     elif type(...
    99+
    2023-01-31
    案例分析 代码 python
  • 简化Python代码的技巧有哪些
    本篇内容介绍了“简化Python代码的技巧有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!什么是单行代码你可以将单行代码视为压缩在一起的...
    99+
    2023-07-02
  • Python代码优化技巧有哪些
    这篇文章给大家介绍Python代码优化技巧有哪些,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。代码优化能够让程序运行更快,它是在不改变程序运行结果的情况下使得程序的运行效率更高,根据 80/20 原则,实现程序的重构、...
    99+
    2023-06-17
  • 如何优化Python代码的性能
    如何优化Python代码的性能Python作为一种高级编程语言,其易学易用的特点使其成为了很多开发者的首选。然而,由于Python是一种解释型语言,其执行速度相对较慢,特别是在处理大数据集或者复杂算法时。因此,对于需要高性能的应用场景,我们...
    99+
    2023-10-22
    代码性能提升 Python性能优化 提高Python执行效率
  • 怎么用C语言优化Python代码
    这篇文章主要介绍“怎么用C优化Python代码”,在日常操作中,相信很多人在怎么用C优化Python代码问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么用C优化Python代码”的疑惑有所帮助!接下来,请跟...
    99+
    2023-06-15
  • JavaScript 代码优化秘籍:如何让你的代码更简洁、更高效
    作为一名 JavaScript 开发人员,优化代码是至关重要的。优化代码可以提高性能、可读性和可维护性。本文将分享一些常用的 JavaScript 代码优化技巧,帮助您写出更优质的代码。 1. 使用严格模式 严格模式可以帮助您发现代码中...
    99+
    2024-02-27
    JavaScript 代码优化、性能、可读性、可维护性、代码质量
  • Python 容器:如何优化你的代码?
    Python 是一门强大的编程语言,拥有丰富的容器类型,包括列表(List)、元组(Tuple)、集合(Set)和字典(Dictionary)。这些容器类型可以存储不同类型的数据,并且具有不同的功能和优势。在 Python 编程中,使用容器...
    99+
    2023-07-02
    容器 http shell
  • Python代码的优化方法有哪些
    这篇文章主要介绍“Python代码的优化方法有哪些”,在日常操作中,相信很多人在Python代码的优化方法有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Python代码的优化方法有哪些”的疑惑有所帮助!...
    99+
    2023-06-16
  • PHP和NumPy:如何优化你的代码?
    在当今的计算机世界中,高效的代码是非常重要的。对于PHP和NumPy这两种编程语言来说,代码优化也是必不可少的。在本文中,我们将讨论如何使用PHP和NumPy来优化你的代码。 使用PHP的缓存机制 PHP是一种解释型语言,每次运行脚本...
    99+
    2023-09-11
    numpy path numy
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作