Dask库可以将Python计算扩展到多核甚至多台机器。关于Python性能的常见抱怨是全局解释器锁(GIL)。由于GIL,一次只有一个线程可以执行Python字节码。因此,即使在现代多核机器上,使用线程也不会加速计算。但是当你需要并行化到多核时,你不需要放弃使用Python:Dask库可以将计算扩展到多核甚至多台机器。某些设置可以在数千台机器上配置Dask,每台机器都有多个内核。扩张的规模虽然有一个限度,但一般都达不到。虽然Dask有很多内置的数组操作,但作为一个非内置的例子,我们可以计算偏度:importnumpyimportdaskfromdaskimportarrayasdarrayarr=dask.from_array(numpy.array(my_data),chunks=(1000,))mean=darray.mean()stddev=darray.std(arr)unnormalized_moment=darray.mean(arr*arr*arr)##参见维基百科中的公式:偏度=((unnormalized_moment-(3*mean*stddev**2)-mean**3)/stddev**3)请注意,每个操作将根据需要使用尽可能多的内核。这将在所有内核上并行执行,即使在计算数十亿个元素时也是如此。当然,并不是我们所有的操作都可以被这个库并行化,有时我们需要自己实现并行化。Dask为此有一个“延迟”函数:delayed(sum)(palindromes)result=total.compute()这将计算字符串是否为回文并返回回文的数量。虽然Dask是为数据科学家创建的,但它绝不仅限于数据科学。每当我们需要在Python中并行化任务时,我们都可以使用Dask——有或没有GIL。
