0

我正在尝试利用 CPU 的所有内核,对于 NumPy,我可以使用所有内核,但是当我在 pandas 中执行某些操作时,它再次只使用一个 CPU 内核。我试图设置最大线程和其他参数,但对我没有任何作用。

例如,

def a(x):
  #### # performing a lot of operations and checks. 

## df.groupby(column_A).apply(a).reset_index()

当系统执行 Numpy 操作时,CPU 是大多数内核的利用率,但对于 pandas,一切都在单个内核上运行。

4

1 回答 1

1

Pandas 的 groupby 是在纯 python 中实现的(参见源代码),并且受 CPython 的 GIL(全局解释器锁)限制为单线程执行。库可以选择自己处理线程安全并在密集计算期间释放 GIL,或者运行可能自身产生“不受限制”线程的本机代码。

您可以尝试在没有 GIL 的 IronPython 上运行您的代码,但是看一眼 Pandas 的代码,我没有看到任何线程,所以我不确定它是否会有所帮助。

于 2020-07-06T00:39:52.327 回答