繁体   English   中英

dask 如何实现并行性?

[英]How does dask achieve parallelism?

我不太了解 dask 的并行模型( https://docs.dask.org/en/latest/delayed-best-practices.html

鉴于python是单线程的, delayed实际上可以提供什么性能优势? 我的理解是它将独立进程/函数推断为图形的一部分,然后以“并行”方式执行它们,但这怎么可能?

我看到它们可能是“并发”进程,但即便如此 - 鉴于该功能是同步的,它如何执行任何并发进程?

简单:python 不是“单线程”的,它可以同时运行多个线程。 您可能正在考虑全局解释器锁 (GIL),它使解释器一次只从一个线程运行一个操作。 然而,许多库不需要持有 GIL,因此基于线程的并行性在许多情况下是真实且有用的。 对于数值库(pandas...)和其他在编译的 C/C++ 代码中完成大部分工作的东西来说,这通常是正确的。

此外,Dask 支持基于进程的并行性,绕过 GIL 问题,但以通信和内存开销为代价。 这对您来说是好是坏将取决于您的工作量。

最后,分布式调度程序即使在单台机器上也是理想的,因为它使您能够选择适合您正在做的任何事情的线程/进程组合。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM