提高 Python 模块导入速度

2024-01-25

之前已经问过如何加速Python模块导入的问题(加速 python“导入”加载器 https://stackoverflow.com/questions/2010255/speeding-up-the-python-import-loader and Python——加速导入? https://stackoverflow.com/questions/6025635/python-speed-up-imports)但没有具体的例子,也没有产生公认的解决方案。因此,我将在这里再次讨论这个问题,但这次是用一个具体的例子。

我有一个 Python 脚本,可以从磁盘加载 3D 图像堆栈,对其进行平滑处理,然后将其显示为电影。当我想快速查看数据时,我从系统命令提示符调用此脚本。我对平滑数据所需的 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 会话而不是系统命令提示符中调用我的函数。这很好,但它太像 MATLAB,我更喜欢从系统提示符中使用我的函数的优雅。

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


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

python3 -X importtime -c "import scipy" 2> scipy.log
tuna scipy.log
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

提高 Python 模块导入速度 的相关文章

随机推荐

  • 实时卡中的 OpenGL?

    我一直在研究 glass GDK 和 glass 原生 Java 开发 我有一个在 Glass 上运行良好的开放 GL 应用程序 使用标准 Android 约定 我希望将其移植到 GDK 以利用语音触发器等功能 虽然我当然可以轻松地将它用作
  • 从哪里开始学习 Linux DMA/设备驱动/内存分配

    我正在移植 调试设备驱动程序 由另一个内核模块使用 并面临死胡同 因为 dma sync single for device 因内核错误而失败 我不知道这个函数应该做什么 而且谷歌搜索也没有什么帮助 所以我可能需要了解更多关于这个东西的知识
  • 正则表达式删除记事本++中标签之间的文本

    我有这样的代码
  • 我的 iframe 无法与 UIWebView 配合使用

    我已经测试过我的iframe到处都运行得很好 但是iOS in Objective C 它不起作用UIWebView 这是我的代码 有人可以帮助我吗 谢谢 self webView scrollView scrollEnabled NO N
  • 目录中所有文件内容的总大小[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 当我使用ls or du 我得到每个文件占用的磁盘空间量 我需要打开每个文件并计算字节数时得到的文件和子目录中所有数据的总和 如果我能在不
  • 如何扩展 LoginUrlAuthenticationEntryPoint 或如何实现 AuthenticationEntryPoint

    我正在尝试这样做 让 spring security 在登录页面的查询字符串中添加 return to url https stackoverflow com q 4696905 即 让spring告诉登录页面我来自哪里 我有一些 SSO
  • 在 Yii 的控制器中创建构造方法

    我刚刚开始学习Yii 我在那里创建了一个PostController控制器 在这个控制器中 我有一个使用要求Sessions 所以我创建了一个构造函数方法 其代码如下 public session public function const
  • open() 不适用于隐藏文件 python

    我想使用 python 在隐藏文件夹中创建并写入 txt 文件 我正在使用这段代码 file name hi txt temp path myfolder docs file name file open temp path w file
  • 在实践中,std::sort 和 std::stable_sort 之间的性能差距有多大?

    两者都应该以 O n log n 的速度运行 但一般来说排序比 stable sort 更快 实践中的性能差距有多大 你对此有一些经验吗 我想要对大量大小约为 20 字节的结构进行排序 对于我来说 结果的稳定性很好 但这不是必须的 目前底层
  • C++ 联合中“受保护”的意义是什么

    受保护的成员或函数有什么用途吗 您不能从联合继承 因此没有子项可以访问它 它是否提供了功能用途 或者只是因为移除它很麻烦而存在 protected in a union变得完全等价于private 但是这个津贴没有坏处 并且避免了额外的特殊
  • 循环播放特定 Gmail 标签的邮件(而非线程)

    我添加了具体的messages 而且不是全部thread 到标签to process通过以下步骤 Turn Conversation ModeGmail 设置中关闭 贴上标签to process到特定消息 当显示消息时 我可以确认只有特定的
  • 如何在Python中使用循环创建元组[重复]

    这个问题在这里已经有答案了 我想创建这个元组 a 1 1 1 2 2 2 3 3 3 4 4 4 5 5 5 6 6 6 7 7 7 8 8 8 9 9 9 我尝试过这个 a 1 1 1 for i in range 2 10 a a i
  • 访问 coo_matrix 中的元素

    这是一个非常简单的问题 对于像 coo matrix 这样的 SciPy 稀疏矩阵 如何访问单个元素 类比 Eigen 线性代数库 可以使用 coeffRef 访问元素 i j 如下所示 myMatrix coeffRef i j 来自 c
  • Web 应用程序中的 Spring 线程

    我正在为MMO浏览器游戏编写服务器 我需要创建几个线程 他们将一直运行 并有一些睡眠时间 使用这样的弹簧线是个好主意吗 Component Scope prototype public class PrintTask2 implements
  • Instagram 基本显示 API 分页

    无论如何 是否可以对使用 Instagram Basic Display API 获得的媒体结果使用分页 我已阅读以下文档 但他们没有任何使用分页的示例 https developers facebook com docs instagra
  • 将带有描述性注释的框添加到 ggplot2 中的 y 轴

    我正在尝试向我的 Y 轴添加另一个标签或描述 我附上了一张图片作为我想要完成的任务的参考 我找不到任何描述如何向轴添加其他元素的内容 它是 Y 轴旁边的 好 和 坏 框 我试图将其合并到我的 ggplot 中 谢谢 在此输入图像描述 htt
  • 使用 React Native 和 Hooks 时,Jest 测试期间状态不会更新

    我正在尝试测试组件中的功能 基本思想是设置某种状态 当按下按钮时 将使用设置的状态调用函数 该代码可以工作 但是当我尝试测试它时 我没有得到预期的结果 就好像在测试期间状态从未被设置 我正在使用 Jest 和 Enzyme 测试的 Reac
  • SQL Server 中 INNER 连接和笛卡尔连接的区别[重复]

    这个问题在这里已经有答案了 可能的重复 内连接和全连接的区别 https stackoverflow com questions 3022713 difference between inner join full join 这两者之间有什
  • Node js Express 应用程序中使用 setTimeout 获取请求的并发性

    控制台日志图片 https i stack imgur com TKhfa png const express require express const app express const port 4444 app get async
  • 提高 Python 模块导入速度

    之前已经问过如何加速Python模块导入的问题 加速 python 导入 加载器 https stackoverflow com questions 2010255 speeding up the python import loader