簡體   English   中英

為什么運行此腳本會凍結我的計算機?

[英]Why does running this script freeze my computer?

我用Python用SciPy編寫了一個腳本,對信號執行短時傅立葉變換。 當我在具有一千個時間點的信號上運行它時,它運行良好。 當我在具有一百萬個時間點的信號上運行它時,它凍結了我的計算機(計算機沒有響應,並且如果正在播放音頻,計算機將輸出跳過和循環的嗡嗡聲); 這是我嘗試過的所有3次一致的情況。 我寫了一些腳本,要花幾個小時,但是我從未遇到過真正使我的計算機死機的腳本。 知道為什么嗎? 該腳本發布在下面:

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會消耗過多的RAM,請參閱為什么簡單的python腳本會使我的系統崩潰

程序運行的過程將用於計算的數組和變量存儲在ram的過程存儲器

您可以通過強制程序使用硬盤存儲器來解決此問題。

有關變通辦法( shelve ,...),請參見以下鏈接

內存使用情況,如何釋放內存

Python大可變RAM使用

我需要通過將Python字典存儲在硬盤上而不是RAM中來釋放RAM。 可能嗎?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM