繁体   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