2024-09-28 21:01:45 发布
网友
我在谷歌云上买了一台e2-highmem-16型机器(16VCPU,128GB内存),因为我需要运行大量计算成本高昂的代码
我在Mac上使用了ssh,安装了python和conda以及我需要的所有软件包,我可以运行代码。唯一的问题是,代码在虚拟机上的运行速度几乎比在我的计算机上慢。根据计算引擎统计,我只使用了0.03%的CPU。这就是它如此缓慢的原因吗?如果是,我如何使用100%的CPU
您没有附加代码,但是,假设您有一个主函数为您运行所有计算,它看起来是这样的(非常通用,因此您可以通过*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,并返回表示可调用函数执行的未来对象
submit(fn, *args, **kwargs)
使用psutil.cpu_count()获取分配最大工作线程和利用cpu核心的逻辑核心数
您没有附加代码,但是,假设您有一个主函数为您运行所有计算,它看起来是这样的(非常通用,因此您可以通过*args和**kwargs任意传递到它):
您可以使用concurrent.future模块并行执行。它将为您提供工作:
concurrent.futures模块为异步执行可调用项提供了一个高级接口
异步执行可以使用ThreadPoolExecutor使用线程执行,也可以使用ProcessPoolExecutor使用单独的进程执行。两者都实现相同的接口,该接口由抽象执行器类定义
submit(fn, *args, **kwargs)
调度要作为fn(*args**kwargs)执行的可调用函数fn,并返回表示可调用函数执行的未来对象使用psutil.cpu_count()获取分配最大工作线程和利用cpu核心的逻辑核心数
相关问题 更多 >
编程相关推荐