首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >提高Python模块导入速度

提高Python模块导入速度
EN

Stack Overflow用户
提问于 2013-05-04 18:54:54
回答 5查看 34.1K关注 0票数 43

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

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

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

代码语言:javascript
运行
复制
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.animation as animation
import scipy.ndimage
import scipy.signal
import sys
import os

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

代码语言:javascript
运行
复制
matplotlib.pyplot   [300ms]
numpy               [110ms]
scipy.signal        [200ms]

我已经尝试过使用from,但是速度并不快。由于Matplotlib是罪魁祸首,而且它以屏幕更新缓慢而闻名,所以我寻找了替代方案。一个是PyQtGraph,但它需要550ms才能导入。

我知道一个显而易见的解决方案,那就是从交互式Python会话调用我的函数,而不是从系统命令提示符调用。这很好,但它太像MATLAB了,我更喜欢在系统提示符下使用函数的优雅。

我是Python的新手,目前我不确定该如何继续。由于我是新人,我希望获得有关如何实现所提出的解决方案的链接。理想情况下,我正在寻找一个简单的解决方案(我们不都是这样吗?)因为代码需要在多台Mac和Linux机器之间移植。

EN

Stack Overflow用户

发布于 2014-08-28 18:51:08

1.35秒并不长,但我想,如果你习惯于用一半的时间来“快速检查”,那么可能看起来是这样的。

Andrea建议一个简单的客户端/服务器设置,但在我看来,您可以很容易地对脚本进行非常轻微的修改,并在您工作时保持其控制台窗口打开:

  • 调用脚本,该脚本执行导入然后等待输入
  • 最小化控制台窗口,切换到您的工作,无论如何:*做工作*
  • 再次选择控制台
  • 为脚本提供某种输入代码<

>H19>再次从脚本接收结果而无需导入,同时它愉快地等待输入

我假设你的脚本每次都是一样的,即你不需要每次都给它图像堆栈位置或任何特定的命令(但这些也很容易做!)。

RAAC_Script.py示例:

代码语言:javascript
运行
复制
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.animation as animation
import scipy.ndimage
import scipy.signal
import sys
import os

print('********* RAAC\'s Script Now Running *********')

while True: # Loops forever
    # Display a message and wait for user to enter text followed by enter key.
    # In this case, we're not expecting any text at all and if there is any it's ignored
    input('Press Enter to test image stack...')

    '''
    *
    *
    **RAAC's Code Goes Here** (Make sure it's indented/inside the while loop!)
    *
    *
    '''

要结束脚本,请关闭控制台窗口或按ctrl+c键。

我已经把它做得尽可能简单,但它只需要很少的额外工作就可以处理一些事情,比如很好地退出,根据输入做一些稍微不同的事情,等等。

票数 1
EN
查看全部 5 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16373510

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档