簡體   English   中英

多處理 python 包是否適用於 Google Cloud ml-engine?

[英]Is the multiprocessing python package working on Google Cloud ml-engine?

我正在嘗試使用多處理 python 包(可在此處找到: https ://docs.python.org/3.4/library/multiprocessing.html?highlight=process)並行化我的預處理功能。

它在我的計算機上運行良好(使用了我的 4 個 CPU),但是當我在 google cloud ml-engine 作業上運行我的代碼時,它似乎不起作用。 這項工作比順序等價物花費的時間要多得多,並且 cpu 利用率在某個時候下降到幾乎 0%。

這是我的代碼嘗試:

import multiprocessing as mp

pool = mp.Pool(processes=mp.cpu_count())
params = [ some_params_lists]
pool.starmap(fn_to_run_in_parallel, params)
pool.close()
pool.join()

我也嘗試使用multiprocessing.Process()沒有任何運氣。

機器配置:

ScaleTier = 'CUSTOM'

masterTYpe = 'large_model'

我認為Google Cloud ml-engine與速度下降無關。 在您的計算機上運行的代碼將在Google Cloud VM中以相同的方式工作。

多處理不一定意味着更快的處理。 在調度開銷超過多處理增益的情況下,它將變得比單處理還要慢。

關於堆棧溢出中的多處理比單處理慢的討論很多。 例如, Python多處理比單處理花費的時間更長

我建議您在處理邏輯之前和之后增加時間,分別在您的計算機和Google Cloud ml-engine中運行,以獲取多處理和單處理中的確切延遲。 例如

import time
start = time.time()
#your code in multiprocessing
end = time.time()
print(end - start)

start = time.time()
#your code in single processing
end = time.time()
print(end - start)

Google Cloud ml-engine需要花費一些時間來提升VM,這可能是您看到的延遲。 上面的代碼將告訴您確切的延遲。

很難回答,因為手頭沒有真正的問題,而且也沒有要審查的代碼。 我的猜測是您的代碼卡在進程中並且永遠不會join() ,這就是 CPU 下降到 0% 的原因。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM