多处理python包是否适用于Google Cloud ml-engine?

问题描述 投票:0回答:1

我正在尝试使用多处理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'

python python-multiprocessing google-cloud-ml
1个回答
0
投票

我不认为Google Cloud ml-engine与减速有任何关系。在您的计算机上运行的代码在Google Cloud VM中的工作方式相同。

多处理不一定意味着更快的处理。在调度开销超过多处理增益的情况下,它将变得比单个处理更慢。

关于多处理的讨论比堆栈溢出中的单个处理要慢。例如Python multiprocessing is taking much longer than single processing

我建议您在处理逻辑之前和之后添加时间,并分别在您的计算机和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,这可能是您看到的延迟。上面的代码将告诉您确切的延迟。

© www.soinside.com 2019 - 2024. All rights reserved.