命令行或.exe中的Python程序给出MemoryError,但是在Spyder IDE中可以正常工作]]

问题描述 投票:2回答:1

版本:

Python 3.7(Spyder)-OS: Windows10-System: Core i5(第6代)+ 16GB RAM

我编写了一个处理大量数据的程序。以下结构用于完成此任务:

程序说明

  • GUI界面用作主要功能(类)。在这里弹出一个界面,要求用户输入,使用该输入进行各种计算,这些计算在不同的功能中指定。
  • 第一个功能是导入功能,其中在指定的(按用户)文件夹中搜索所有.wav文件,并在其中导入这些文件的数据。所有导入的项目都被附加(numpy.append)到一个大数组中。
  • 大数组(用于20个文件,大约2.000.000.000个数据点)用于计算声音文件的特征。它具有许多数据点的原因是因为.wav文件的采样率设置为78125个样本/秒,我需要进行精确计算。
  • [计算后,在指定的文件夹中生成了2个图,并且还将2个csv与所需的数据一起存储在该文件夹中。
  • 问题陈述

  • 在spyder环境中运行主要功能(程序),效果很好。查看所有数据并生成输出大约需要10分钟。

  • 使用PyInstaller将函数编译为.exe,可以正常运行,没有错误,导入了所有依赖项。但是,在运行程序时,MemoryError几乎立即弹出(请参见下图)。

  • Image: error message from command line when executing the exe file

    已尝试的解决方案

  • 通过CLI运行python脚本,给出相同的错误

  • 运行只有两个要导入文件的.exe程序,可以运行所有文件,但是速度非常慢(比通过spyder执行的速度慢得多)]] >>

    问题

    • 为什么spyder有足够的内存来处理所有数据而没有问题,但是通过命令行执行.py或执行.exe文件时,总会出现内存错误?
    • 为什么通过CL运行.exe或.py比在spyder IDE中运行慢?

    目标

    此程序应能够处理公司每台笔记本电脑上的噪音数据(有时也为8gb ram)。因此,我想找到一种方法,让程序在使用过的计算机上分配所有可用的RAM。

    预先感谢您的帮助!

版本:Python 3.7(Spyder)-操作系统:Windows10-系统:Core i5(第六代)+ 16GB RAM我编写了一个处理大量数据的程序。使用以下结构来实现此目的:程序...

同时由于Axe319,我找到了问题的答案:

Spyder IDE在64位版本的python上运行,从而使程序运行平稳且没有任何问题。不过,我的python解释器仍然是python的32位版本。

解决问题所采取的步骤:

  • 卸载python 32位版本
  • 安装python 64位版本
  • 使用pip install -packages-重新安装所有使用过的软件包”>
  • 使用pip install pyinstaller再次安装PyInstaller
  • 使用PyInstaller将程序编译为.exe
  • 这一切似乎都正常了!

    python-3.x command-line out-of-memory exe spyder
    1个回答
    0
    投票

    同时由于Axe319,我找到了问题的答案:

    Spyder IDE在64位版本的python上运行,从而使程序运行平稳且没有任何问题。不过,我的python解释器仍然是python的32位版本。

    © www.soinside.com 2019 - 2024. All rights reserved.