일부 시뮬레이션을 수행하는 함수가 있는데 은 배열을 문자열 형식으로 반환합니다.Python 다중 처리 - pool.map 작업의 프로세스 추적
의 입력 매개 변수 값, 가능한 입력 값이 10000 개 이상인 에 대한 시뮬레이션 (함수)을 실행하고 결과를 단일 파일에 기록하려고합니다.
시뮬레이션을 병렬로 실행하려면 다중 처리, 특히 pool.map function 을 사용하고 있습니다.
이상의 시뮬레이션 기능을 실행하는 전체 프로세스가 매우 오랜 시간이 걸리기 때문에 전체 작업 과정을 추적하고 싶습니다.
아래의 현재 코드에서 문제가되는 것은 pool.map이 해당 작업 중 프로세스 추적없이 10000 번 실행되는 것입니다. 일단 병렬 처리가 10000 시뮬레이션 실행을 완료하면 (수 시간이 걸릴 수 있음), 10000 시뮬레이션 결과가 파일에 저장 될 때 추적을 계속합니다. 그래서 pool.map 조작의 처리를 추적하지 않습니다.
프로세스 추적을 허용 할 수있는 간단한 코드가 있습니까?
def simFunction(input):
# Does some simulation and outputs simResult
return str(simResult)
# Parallel processing
inputs = np.arange(0,10000,1)
if __name__ == "__main__":
numCores = multiprocessing.cpu_count()
pool = multiprocessing.Pool(processes = numCores)
t = pool.map(simFunction, inputs)
with open('results.txt','w') as out:
print("Starting to simulate " + str(len(inputs)) + " input values...")
counter = 0
for i in t:
out.write(i + '\n')
counter = counter + 1
if counter%100==0:
print(str(counter) + " of " + str(len(inputs)) + " input values simulated")
print('Finished!!!!')
정말 고마워요! – user32147