Я проверил ваши настройки, и 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-разрядная версия) он потребляет 600 МБ пиковой памяти во время вызова welch
, который перерабатывается непосредственно после этого, дополнительно до ~ 600 МБ выделения для исходного массива и самого Python. Призыв к welch
сам по себе не приводит к постоянному значительному увеличению памяти.
Вы можете сделать следующее:
- Обновление до новейшей версии
scipy
, поскольку проблемы с Уэлчем ранее
- Убедитесь, что на вашем ПК достаточно свободной памяти и закройте приложения, требующие много памяти (например, chrome)
- Преобразование вашего массива в более низкий тип данных, например. от
float64
до float32
или float16
- Обязательно освободите переменные, которые больше не нужны. Особенно, если вы загружаете несколько сигналов и сохраняете результат в разных массивах, он может накапливаться довольно быстро. Оставьте только то, что вам нужно, и удалите переменные через
del variable_name
, убедитесь, что в других местах программы не осталось ссылок. Например, если вам не нужна переменная audio
, либо удалите ее явно после welch(...)
, либо перезапишите ее следующими аудиоданными.
- Запустите сборщик мусора
gc.collect()
. Однако это, вероятно, не решит вашу проблему, так как в любом случае Python управляется автоматически в Python.