私のコードの実行時間を改善したいと思います。現在、私は追加モードでテキストファイルを開いてファイルの最後に値を書き込んだ後、ループするたびにファイルを閉じるので、非常に遅いです。誰かが私のすべてのデータをPythonデータ構造体に格納して、結果を同じフォーマットで出力するのを手伝ってもらえますか(つまり、各値をスペースで区切ったテキストファイルのすべての結果)?私はPythonには新しく、実際にこれを実装する方法を理解していません。私のコードは次のとおりです。Pythonデータ構造で実行時間を改善する
######import required packages########
import numpy
import math
#######Set working directory##########
import os
os.chdir('/Users/DevEnv/')
######Remove files generated from previous simulations#####
try:
os.remove('excitations.txt')
except OSError:
pass
##############Set Model Parameters#####################
n=2 #number of iterations -Change for desired number of loops
tlength=1501 #Length of time interval - DO NOT CHANGE
wu=100 #DO NOT CHANGE
N=250 #wu*T/4Pi approximately - DO NOT CHANGE
Pi=math.radians(180)
t=numpy.linspace(0,10,tlength)
Dw=wu/float(N)
for k in range(0,n):
A=[]
wi=[]
for i in range (0,N):
wi.append(Dw/2+i*Dw) #Middle of distribution
for j in range (0,tlength):
Aj=[]
phi=numpy.random.rand(N,1)*2*Pi #Generate random phase angle on 0,2pi
for i in range (0,N):
w=wi[i]
Sv=(((1+4*0.6**2*(w/15)**2)/((1-(w/15)**2)**2+4*0.6**2*(w/15)**2))*(0.0000753*(w/1.5)**4/((1-(w/1.5)**2)**2+4*0.6**2*(w/1.5)**2)))
Aj.append(math.sqrt(Sv*Dw)*2*math.cos(wi[i]*t[j]+phi[i]))
A.append(sum(Aj))
outFile = open('excitations.txt','a') #open/create the output file
for item in A:
outFile.write('%s ' %item)
outFile.write('\n')
outFile.close() #close the output file
あなたが一定である計算結果を保存することができますまず第一に。例えば、4 * 0.6 ** 2。次に、通常は悪い3つのネストされたループがあります。本当に3つが必要かどうか確認してください。 – GurV
提案していただきありがとうございます。私は変数として定数値を保存します。しかし、私は3つのネストされたループが必要です – user7269405