在有多个计算核心情况下,若任务数大于核心数,使用dask的程序执行是并发还是并行?
时间: 2024-06-05 07:09:11 浏览: 272
在有多个计算核心情况下,若任务数大于核心数,使用dask的程序执行既可以是并发也可以是并行的,具体取决于所使用的dask scheduler类型和配置。
默认情况下,dask会使用多线程执行任务,即使用ThreadPoolExecutor来启动多个线程并发执行任务,但这并不是真正的并行执行,因为这些线程仍然在同一个进程中运行,受到GIL的限制。因此,如果任务数大于核心数,使用默认配置的dask程序执行时,任务将会被并发执行,但并不是真正的并行执行。
如果想要实现真正的并行执行,需要使用dask的分布式模式,即使用Dask Distributed来启动多个进程并行执行任务。在这种模式下,可以配置多个worker进程,并在这些进程中启动多个线程来执行任务。这样就可以实现真正的并行执行,但需要注意的是,每个worker进程都需要占用一定的系统资源,因此需要根据系统的配置和任务的规模来进行调整。
阅读全文