python - 为什么 Google Compute Engine 中的多处理不使用 100% CPU?

标签 python google-compute-engine python-multithreading joblib

我必须并行运行一些代码,虽然它使用了我本地计算机中 100% 的 CPU,但它的工作方式与 Google Compute Engine 中不同。

我使用的是具有 24vCPU 和 22Gb 内存的计算引擎。下图显示了程序运行时CPU的利用率。

CPU utilization below 0,15% 我正在使用的模拟代码是:

from joblib import Parallel, delayed
import multiprocessing 

def some_function():
       num_cores = multiprocessing.cpu_count() # = 24
       salida = Parallel(n_jobs=num_cores)(delayed(hijo.calcula_error)(metodo='pond') for hijo in self.descendencia)

其中 hijo.calcula_error 是一个可以并行运行的函数。

这种行为正常还是我做错了什么?

最佳答案

我认为这也很大程度上取决于您的代码,我会查看 multiprocessing methods并通过在单核实例上运行它来开始测试,看看它是否使用了所有容量(或者可能在 24 核实例上生成 24 个进程)。我希望这能有所帮助。

我在这里要考虑的另一件事是查看可能限制实例整体性能的内存瓶颈或磁盘 I/O 限制。

关于python - 为什么 Google Compute Engine 中的多处理不使用 100% CPU?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55748030/

相关文章:

python - 如何使树莓派之间的通信代码成为多线程?

python - 如何在 TCP Python 聊天服务器上拥有多个客户端?

python Selenium : Set Firefox preferences failed

docker - 如何在 Github 操作中为计算引擎虚拟机拉取 Docker 镜像?

google-compute-engine - 使用 Google 计算引擎的 2 因素身份验证(2 步验证)

google-compute-engine - 在 GKE 集群创建时启用自动扩缩

python - queue.get() 仅返回一项

python - 在 AngularJS 指令中从 templateURL 加载 html(在 django 应用程序中)

python - 这是线程的正确操作流程吗?

python - pandas 每组特定值的频率