2016-08-25 5 views
0

나는 평균 및 표준 편차가있는 일부 배포판에서 임의의 값을 선택하고이 값으로 계산을 수행하는 Python에서 script.py이라는 스크립트를 가지고 있습니다. 저는 2000 시간 단계의 루프에서 7 가지 다른 배포판에 대해이 작업을 수행하고 있습니다. 몇 가지 추가 계산 후 script.py은 벡터를 최종 출력으로 반환합니다. 내가하고 싶은 일은이 스크립트를 동시에 100 번 실행하는 것입니다. (나는 한 번의 결과가 다른 결과에 영향을 미치기를 원하지 않습니다.) 평균을 찾기 위해 100 번의 실행마다이 출력 벡터를 알고 싶습니다. 끝. 좋은 방법은 각 벡터를 100 개의 열이있는 행렬로 저장하는 것입니다.파이썬에서 스크립트를 여러 번 실행하고 결과를 저장하십시오.

서브 프로세스를 시도했지만 각각의 실행 결과를 저장하는 방법을 찾는 데 문제가 있습니다. 어떤 도움이라도 대단히 감사 할 것입니다.

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 

은 기본적으로 내가 cumulativeregret 100 시간을 계산 한 후 평균을 계산하려면 :

내 코드의 일부는 다음을 포함합니다. 스크립트를 한 번만 실행해도 프로세스에 임의성이 많기 때문에 충분한 결과를 얻지 못합니다. 희망이 도움이됩니다.

+2

출력을 저장하는 데 사용하는 코드 예를 제공해 주실 수 있습니까? 또한 코드가 올바르게 실행되지 못하게하는 다른 실수가있을 수 있습니다. 코드가 없으면 누구도 도움을 줄 수 없습니다. – meetaig

+2

아마도 스크립트를 함수로 바꾸기 시작해야 할 것입니다. –

+1

[mcve]가 없으면 나는 당신을 도울 수 없다는 것을 두려워합니다. 코드가 매우 길고 복잡하며 독점적 인 경우 모든 것을 제공 할 필요는 없습니다. 즉, 요점과 관련하여 하위 프로세스로 작업하고 실제로 출력을 절약하는 부분과 관련된 부분입니다. 예를 들어 무작위/상수 벡터를 반환 할 수 있습니다. –

답변

0

병렬을 사용하면 100 번 실행할 수 있습니다. 멀티 CPU가있는 멀티 코어 서버를 사용하면 진정으로 병렬로 실행할 수 있습니다.

내 머리 꼭대기에서 떨어져서 작동해야합니다.

parallel -j 100 python script.py > script.out 
관련 문제