利用谷歌云计算引擎V上的所有CPU;

2024-09-28 21:01:45 发布

您现在位置:Python中文网/ 问答频道 /正文

我在谷歌云上买了一台e2-highmem-16型机器(16VCPU,128GB内存),因为我需要运行大量计算成本高昂的代码

我在Mac上使用了ssh,安装了python和conda以及我需要的所有软件包,我可以运行代码。唯一的问题是,代码在虚拟机上的运行速度几乎比在我的计算机上慢。根据计算引擎统计,我只使用了0.03%的CPU。这就是它如此缓慢的原因吗?如果是,我如何使用100%的CPU


Tags: 内存代码引擎机器mac计算机原因cpu
1条回答
网友
1楼 · 发布于 2024-09-28 21:01:45

您没有附加代码,但是,假设您有一个主函数为您运行所有计算,它看起来是这样的(非常通用,因此您可以通过*args和**kwargs任意传递到它):

def f_execute_work(*args, **kwargs):
    .....
    .....

您可以使用concurrent.future模块并行执行。它将为您提供工作:

concurrent.futures模块为异步执行可调用项提供了一个高级接口

异步执行可以使用ThreadPoolExecutor使用线程执行,也可以使用ProcessPoolExecutor使用单独的进程执行。两者都实现相同的接口,该接口由抽象执行器类定义

import concurrent.futures
with ThreadPoolExecutor(max_workers=psutil.cpu_count()) as executor:
    future = executor.submit(f_execute_work, *args, **kwargs)
    print(future.result())

submit(fn, *args, **kwargs)调度要作为fn(*args**kwargs)执行的可调用函数fn,并返回表示可调用函数执行的未来对象

使用psutil.cpu_count()获取分配最大工作线程和利用cpu核心的逻辑核心数

相关问题 更多 >