【问题标题】:Memory error in pycharm using scipy's welch function使用 scipy 的 welch 函数在 pycharm 中出现内存错误
【发布时间】:2018-11-02 22:38:16
【问题描述】:

我想在 pycharm 中使用 scipy.signal 获取韦尔奇周期图。我的信号是 Fs = 48 kHz 的 5 分钟音频文件,所以我猜这是一个非常大的信号。该行是:

f, p = signal.welch(audio, Fs, nperseg=512)

我遇到了内存错误。我想知道这是否是 pycharm 配置的事情,或者它只是一个太大的信号。我的内存是 8 Gb。

有时它可以处理一些音频文件,但想法是处理几个,所以在一两个之后,错误就会出现。

【问题讨论】:

    标签: python-3.x scipy pycharm


    【解决方案1】:

    我已经测试了您的设置,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 的峰值内存,之后直接回收,另外还有大约 600MB 的分配给初始数组和 Python 本身。对welch 本身的调用不会导致任何永久性显着内存增加。

    您可以执行以下操作:

    • 升级到最新版本的 scipy,因为之前 Welch 已经有 problems
    • 检查您的 PC 是否有足够的可用内存并关闭需要大量内存的应用程序(例如 chrome)
    • 将数组转换为较低的数据类型,例如从float64float32float16
    • 确保释放不再需要的变量。特别是如果您加载多个信号并将结果存储在不同的数组中,它可以很快累积。只保留您需要的内容并通过del variable_name 删除变量,检查程序中其他地方是否没有剩余引用。例如,如果您不需要 audio 变量,请在 welch(...) 之后显式删除它,或者用下一个音频数据覆盖它。
    • 运行garbage collectorgc.collect()。但是,这可能无法解决您的问题,因为无论如何垃圾都是在 Python 中自动管理的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-11-09
      • 2012-04-24
      • 2017-08-09
      • 1970-01-01
      • 2021-05-30
      • 1970-01-01
      • 2016-11-01
      • 2019-10-31
      相关资源
      最近更新 更多