python - 提高 Python 模块导入的速度

标签 python performance import module

如何加快导入 Python 模块的问题之前已被问过(Speeding up the python "import" loaderPython -- Speed Up Imports?),但没有具体示例,也没有产生公认的解决方案。因此,我将在这里再次讨论这个问题,但这次是一个具体的例子。

我有一个 Python 脚本,它从磁盘加载 3-D 图像堆栈,对其进行平滑处理,并将其显示为电影。当我想快速查看我的数据时,我会从系统命令提示符调用此脚本。我对平滑数据所需的 700 毫秒感到满意,因为这与 MATLAB 相当。但是,导入模块需要额外的 650 毫秒。所以从用户的角度来看,Python 代码的运行速度只有一半。

这是我要导入的一系列模块:

import numpy as np
import matplotlib.pyplot as plt
import matplotlib.animation as animation
import scipy.ndimage
import scipy.signal
import sys
import os

当然,并非所有模块的导入速度都一样慢。罪魁祸首是:

matplotlib.pyplot   [300ms]
numpy               [110ms]
scipy.signal        [200ms]

我已经尝试过使用 from,但这并没有更快。由于 Matplotlib 是罪魁祸首,而且它以缓慢的屏幕更新而闻名,我寻找替代品。一种是 PyQtGraph,但导入需要 550 毫秒。

我知道一个明显的解决方案,即从交互式 Python session 而不是系统命令提示符调用我的函数。这很好,但它太像 MATLAB,我更喜欢从系统提示符中获得我的函数的优雅。

我是 Python 新手,目前不知道如何继续。由于我是新手,我很感激有关如何实现提议的解决方案的链接。理想情况下,我正在寻找一个简单的解决方案(不是我们所有人!),因为代码需要在多台 Mac 和 Linux 机器之间移植。

最佳答案

不是问题的实际答案,而是关于如何使用 Python 3.7 和 tuna 分析导入速度的提示(我的一个小项目):

python3 -X importtime -c "import scipy" 2> scipy.log
tuna scipy.log

enter image description here

关于python - 提高 Python 模块导入的速度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16373510/

相关文章:

python - 无法在 Python 中访问导入的函数

python - 为什么有时我可以使用嵌套模块中的函数而无需导入整个路径?

ruby-on-rails - 将数据从 JSON api 保存到 Ruby on Rails DB

python - 使用 splinter python 保存图像元素

python - 如何去除图像中对象的边缘噪声

python - 检查类是否等于两个字符串之一

ios - 是否有用于 iPhone 应用程序的 Sqlite 3 查询或性能分析器?

database - 从 CSV 写入 SQL 数据库

python - 如何使用python将excel表格粘贴到word中

ruby-on-rails - 大型项目的 sprockets 最佳实践