我编写了一个python脚本,将使用不同的输入启动此脚本10000次,我注意到在实际结构中需要相当长的时间:
def MCMC(DepT,Dur,Dep,Arr):
#Get data from list
with open('GaR5.txt', 'r') as searchfile:
for line in searchfile:
if Dep in line:
DepTZ=float(line.split('\t')[2])
DepRat=float(line.split('\t')[3])
if Arr in line:
ArrTZ=float(line.split('\t')[2])
ArrRat=float(line.split('\t')[3])
tZ=DepTZ-ArrTZ
from numpy import sin
import math
from scipy import integrate as intg
def CalcJetlg(x):
return(((intg.quad(lambda z: sin(z * math.pi / 8 + (-math.pi/2 - 12 * math.pi / 16)), x, x+Dur))[0]))
#[0] true integral, [1] Fresnel sine signal
iT=(round(float(1-(CalcJetlg(DepTime)+(-5.1))/(-10.2)),2))
oT=(round(float(1-(CalcJetlg(DepTime+tZ)+(-5.1))/(-10.2)),2))
if(TzDiff<0):
resR=(iT*0.8+oT*0.2)
else:
resR=(1-(iT*0.8+oT*0.2))
APRat=((1-(DepRat/119))+(1-(ArrRat/119)))/2
return(round(float(resR*0.8+APRat*0.2),2))
import sys
DepT=float(sys.argv[1])
Dur=float(sys.argv[2])
Dep=str(sys.argv[3])
Arr=str(sys.argv[4])
print(MCMC(DepT,Dur,Dep,Arr))
GaR5.txt看起来像这样:
1 GKA 10.0 120
2 MAG 10.0 120
3 HGU 10.0 120
4 LAE 10.0 120
5 POM 10.0 120
6 WWK 10.0 120
7 UAK -3.0 120
8 GOH -3.0 120
9 SFJ -3.0 120
10 THU -4.0 120
我会在windows shell中运行这样的脚本 python MCMC.py
我注意到这样的执行需要1秒钟,当我在Spyder iPython控制台启动它只需0.02秒时,为了加快这个脚本,这可能是一个好方法吗?
我发现主要的事情是从shell启动它比在iPython中运行它需要更长的时间,是否有更快的方式来运行脚本?它必须通过shell运行,给出我有的其他编码