Python 3.x 使用scipy'的pycharm内存错误;s-welch函数
我想用pycharm中的scipy.signal得到韦尔奇周期图。我的信号是一个5分钟的音频文件,Fs=48 kHz,所以我想这是一个非常大的信号。线路是:Python 3.x 使用scipy'的pycharm内存错误;s-welch函数,python-3.x,scipy,pycharm,Python 3.x,Scipy,Pycharm,我想用pycharm中的scipy.signal得到韦尔奇周期图。我的信号是一个5分钟的音频文件,Fs=48 kHz,所以我想这是一个非常大的信号。线路是: f, p = signal.welch(audio, Fs, nperseg=512) 我有一个记忆错误。我想知道这是pycharm配置的问题,还是信号太大了。我的内存是8GB 有时它可以处理一些音频文件,但想法是处理多个音频文件,因此一两个音频文件之后,错误就会出现。我已经测试了您的设置,welch似乎没有问题。为了进一步分析,需要运行
f, p = signal.welch(audio, Fs, nperseg=512)
我有一个记忆错误。我想知道这是pycharm配置的问题,还是信号太大了。我的内存是8GB
有时它可以处理一些音频文件,但想法是处理多个音频文件,因此一两个音频文件之后,错误就会出现。我已经测试了您的设置,welch似乎没有问题。为了进一步分析,需要运行整个脚本
import numpy as np
from scipy.signal import welch
fs = 48000
signal_length = 5 * 60 * fs
audio_signal = np.random.rand(signal_length)
f, Pxx = welch(audio_signal, fs=fs, nperseg=512)
在我的计算机(windows 10,64位)上,它在调用welch
期间消耗了600 MB的峰值内存,之后直接循环使用,此外,初始数组和Python本身的分配量约为600 MB。调用welch
本身不会导致任何永久性的显著内存增加
您可以执行以下操作:
- 升级至最新版本的
,与之前的Welch一样scipy
- 检查您的电脑是否有足够的可用内存,并关闭内存不足的应用程序(如chrome)
- 将数组转换为较低的数据类型,例如从
转换为float64
或float32
float16
- 确保释放不再需要的变量。特别是如果加载多个信号并将结果存储在不同的数组中,它可能会快速累积。仅保留所需内容并通过
删除变量,检查程序中其他地方是否没有剩余引用。例如,如果您不需要del variable\u name
变量,可以在audio
之后显式删除它,或者用下一个音频数据覆盖它welch(…)
- 运行
。然而,这可能无法解决您的问题,因为垃圾在Python中是自动管理的gc.collect()