为什么 运行 这个脚本冻结了我的电脑?
Why does running this script freeze my computer?
我在 Python 中编写了一个脚本,使用 SciPy 对信号执行短时傅里叶 t运行sform。当我 运行 它在具有一千个时间点的信号上时,它 运行 很好。当我 运行 它在具有一百万个时间点的信号上时,它冻结了我的计算机(计算机没有响应,如果正在播放音频,计算机会输出跳跃和循环的嗡嗡声);这在我尝试的所有三次中都一直发生。我写过需要花费数小时的脚本,但我从未遇到过真正让我的计算机死机的脚本。知道为什么吗?脚本贴在下面:
import scipy as sp
from scipy import fftpack
def STFT(signal, seconds_per_sample, window_seconds, min_Hz):
window_samples = int(window_seconds/seconds_per_sample) + 1
signal_samples = len(signal)
if signal_samples <= window_samples:
length = max(signal_samples, int(1/(seconds_per_sample*min_Hz)) + 1)
return sp.array([0]), fftpack.fftshift(fftpack.fftfreq(length, seconds_per_sample)), fftpack.fftshift(fftpack.fft(signal, n = length))
else:
length = max(window_samples, int(1/(seconds_per_sample*min_Hz)) + 1)
frequency = fftpack.fftshift(fftpack.fftfreq(length, seconds_per_sample))
time = []
FTs = []
for i in range(signal_samples - window_samples):
time.append(seconds_per_sample*i)
FTs.append(fftpack.fftshift(fftpack.fft(signal[i:i + window_samples], n = length)))
return sp.array(time), frequency, sp.array(FTs)
当您 运行 脚本中的点数过多时,脚本会消耗过多的 RAM,请参阅 Why does a simple python script crash my system
您的程序 运行s 的过程将用于计算的数组和变量存储在 进程内存 中,即 ram
您可以通过强制程序使用硬盘内存来解决这个问题。
解决方法(shelve
,...)请参阅以下链接
memory usage, how to free memory
Python large variable RAM usage
I need to free up RAM by storing a Python dictionary on the hard drive, not in RAM. Is it possible?
我在 Python 中编写了一个脚本,使用 SciPy 对信号执行短时傅里叶 t运行sform。当我 运行 它在具有一千个时间点的信号上时,它 运行 很好。当我 运行 它在具有一百万个时间点的信号上时,它冻结了我的计算机(计算机没有响应,如果正在播放音频,计算机会输出跳跃和循环的嗡嗡声);这在我尝试的所有三次中都一直发生。我写过需要花费数小时的脚本,但我从未遇到过真正让我的计算机死机的脚本。知道为什么吗?脚本贴在下面:
import scipy as sp
from scipy import fftpack
def STFT(signal, seconds_per_sample, window_seconds, min_Hz):
window_samples = int(window_seconds/seconds_per_sample) + 1
signal_samples = len(signal)
if signal_samples <= window_samples:
length = max(signal_samples, int(1/(seconds_per_sample*min_Hz)) + 1)
return sp.array([0]), fftpack.fftshift(fftpack.fftfreq(length, seconds_per_sample)), fftpack.fftshift(fftpack.fft(signal, n = length))
else:
length = max(window_samples, int(1/(seconds_per_sample*min_Hz)) + 1)
frequency = fftpack.fftshift(fftpack.fftfreq(length, seconds_per_sample))
time = []
FTs = []
for i in range(signal_samples - window_samples):
time.append(seconds_per_sample*i)
FTs.append(fftpack.fftshift(fftpack.fft(signal[i:i + window_samples], n = length)))
return sp.array(time), frequency, sp.array(FTs)
当您 运行 脚本中的点数过多时,脚本会消耗过多的 RAM,请参阅 Why does a simple python script crash my system
您的程序 运行s 的过程将用于计算的数组和变量存储在 进程内存 中,即 ram
您可以通过强制程序使用硬盘内存来解决这个问题。
解决方法(shelve
,...)请参阅以下链接
memory usage, how to free memory
Python large variable RAM usage
I need to free up RAM by storing a Python dictionary on the hard drive, not in RAM. Is it possible?