我在python中有一个名为script.py
的脚本,它从给定均值和标准差的某些分布中选择一些随机值,然后用这些值进行一些计算。我在2000个时间步的循环中为七个不同的发行版做这个。经过一些额外的计算后,script.py
返回一个向量作为最终输出。我想要做的是同时运行这个脚本100次(我不希望一次运行的结果影响其他人的结果)我想知道这100次运行中的每一次的输出向量,以便找到一个最后的平均值。一种好方法是将每个向量保存为具有100列的矩阵中的列。
我尝试了subproccess,但是我找不到保存每次运行输出的方法。任何帮助将不胜感激。
我的部分代码包括以下内容:
for k in range(N2):
for i in range(7):
sample2 = np.random.normal(prior[i,0],prior[i,1],1)
y[i] = sample2[0]
index, value = max(enumerate(y), key=operator.itemgetter(1))
indices[k] = index
#trials[k,index] = trials[k-1,index]+1
realdata = np.random.normal(parameters[index,0],parameters[index,1],1)
ytrue[k] = realdata[0]
prior[index,0] = (prior[index,0]/prior[index,1]**2+ytrue[k]/variance)/(1./prior[index,1]**2+1./variance)
prior[index,1] = math.sqrt(1./(1./prior[index,1]**2+1./variance))
meanforoptions[k,:] = prior[:,0]
regret = parameters[1,0]-ytrue[k]
cumulativeregret[k] = cumulativeregret[k-1]+regret
基本上我想计算累计遗嘱100次,然后计算平均值。只运行一次脚本一次并没有给我足够的结果,因为过程中有很多随机性。希望这会有所帮助。
答案 0 :(得分:0)
你可以使用并行运行100次 - 如果你有一个多CPU的多核服务器,它将真正并行运行它们。
在我的脑海中,这样的东西应该可行。
parallel -j 100 python script.py > script.out