【问题标题】:not able to use all core of CPU in pandas linux无法在 pandas linux 中使用 CPU 的所有核心
【发布时间】:2020-07-06 08:39:52
【问题描述】:

我正在尝试使用 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,一切都在单个核心上运行。

【问题讨论】:

标签: python pandas-groupby mathematical-optimization numexpr


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-11-22
    • 2017-07-27
    • 2017-05-27
    • 2020-09-12
    • 1970-01-01
    • 2016-05-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多