2
我已經寫了一段簡單的代碼,以加快我的函數f pool.join()之後不停止,使用2個CPU的例子如下所示:多重處理在Python - 過程
if __name__ == '__main__':
pool = Pool(processes = 2)
f0_list = pool.map(f,range(nlocs))
pool.terminate()
pool.join()
final_f0 = np.sum(f0_list,axis=0)
f0_final = final_f0[0:121] # here I get the error message: 'final_f0 not defined'
我的結果'final_f0'是正確的。不過,我期待的是,pool.join()後,所有的進程將結束它似乎並沒有這樣的情況,這是因爲:
- 我還有一個CPU在後臺運行,它似乎沒有不即使final_f0已被有效返回,也會停止嗎?
- 當我如上所述嘗試剪切'final_f0'時,出現此錯誤消息。錯誤信息多次打印,就好像Python一遍又一遍地運行腳本。
有什麼建議嗎?
你說你有一個CPU在後臺運行 - 你確定CPU的使用實際上是由Python進程引起的嗎? ''''''''''''''''''在您調用'join'之前'''''''''''''''''''''''''至於#2,我們需要看到更多的代碼,以及獲得的實際回溯,以提供幫助。 – dano 2014-09-04 14:12:07
是的,我很確定它是Python,因爲我停止了在我的機器上運行的其他程序來檢查。至於我在f0_final上的操作,這很簡單,我只是試圖保留前122個值 - 我更新了我的問題,並提供了更多的細節。 – Neodyme 2014-09-04 14:48:48
你使用的是Windows嗎?您應該能夠檢查任務管理器,以確切瞭解*使用CPU的過程,以及在終止池後查看是否實際上運行了多個python進程。 – dano 2014-09-04 15:00:26