如何使用Dask使用所有cpu核?

如何使用Dask使用所有cpu核?,dask,dask-distributed,dask-delayed,Dask,Dask Distributed,Dask Delayed,我有一个超过35000行的熊猫系列。我想使用dask使它更高效。然而,我认为dask代码和pandas代码是同时使用的。 最初,“ser”是pandas系列,fun1和fun2是在系列的各个行中执行模式匹配的基本函数 熊猫: ser = ser.apply(fun1).apply(fun2) 达斯克: 在检查cpu内核的状态时,我发现并不是所有的内核都被使用了。只有一个核心已经习惯了100% 是否有任何方法可以使用dask使串行代码更快,或者在串行执行dask操作时利用cpu的所有内核?请参阅

我有一个超过35000行的熊猫系列。我想使用dask使它更高效。然而,我认为dask代码和pandas代码是同时使用的。 最初,“ser”是pandas系列,fun1和fun2是在系列的各个行中执行模式匹配的基本函数

熊猫:

ser = ser.apply(fun1).apply(fun2)
达斯克:

在检查cpu内核的状态时,我发现并不是所有的内核都被使用了。只有一个核心已经习惯了100%

是否有任何方法可以使用dask使串行代码更快,或者在串行执行dask操作时利用cpu的所有内核?

请参阅

您调用的函数很可能是纯python函数,因此要求使用GIL,该锁确保在一个线程中一次只执行一条python指令。在这种情况下,您需要在单独的进程中运行函数以查看并行性。您可以通过使用多进程调度程序来实现这一点

ser = ser.apply(fun1).apply(fun2).compute(scheduler='processes')
或者通过使用分布式调度器(它在一台机器上运行良好,并且实际上具有一些新一代的优点,例如状态仪表板);在最简单的默认情况下,创建客户机就足够了:

client = dask.distributed.Client()
但是你应该读一读

client = dask.distributed.Client()