如何利用Linux中的所有CPU内核来执行Python代码



我正在执行一些pandasNumPy操作,在窗口中我可以看到CPU的所有内核都在运行,但在Linux环境中,一切都在1个内核上运行。

我想参与所有核心,因此请快速执行操作。

例如,

def a():
#some operations
..... 

我只想执行一次此功能,但使用所有内核。因为当它只使用一个内核时,在 Linux 中大约需要 6 个小时,尽管在窗口中只需要 2 个小时。

我在 windows numexpr 中看到将默认内核设置为 4。

有什么方法可以从代码中在 Linux 中做同样的事情吗?

使用concurrent.future模块进行平行执行。 它将为您完成工作:

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

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

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

submit(fn, *args, **kwargs)调度可调用对象 fn 作为fn(*args **kwargs)执行,并返回一个表示可调用对象执行的 Future 对象。

使用psutil.cpu_count()获取逻辑内核编号,以便调度最大工作线程和利用 CPU 内核。

相关内容

  • 没有找到相关文章