我有一個函數執行一些模擬,並且 返回一個字符串格式的數組。Python多處理 - 跟蹤pool.map操作的過程
我想運行 變化的輸入參數值,超過10000個可能的輸入值, 的仿真(功能),並將結果寫入單個文件。
我正在使用多處理,特別是pool.map函數 並行運行模擬。
由於運行仿真功能10000次以上的整個過程需要很長時間,我真的很想跟蹤整個操作過程。
我認爲我當前代碼中的問題是,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 2015-02-26 17:08:45