在Python中运行几次脚本并保存输出

时间:2016-08-25 11:53:37

标签: python

我在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次,然后计算平均值。只运行一次脚本一次并没有给我足够的结果,因为过程中有很多随机性。希望这会有所帮助。

1 个答案:

答案 0 :(得分:0)

你可以使用并行运行100次 - 如果你有一个多CPU的多核服务器,它将真正并行运行它们。

在我的脑海中,这样的东西应该可行。

 parallel -j 100 python script.py > script.out