加入收藏 | 设为首页 | 会员中心 | 我要投稿 河北网 (https://www.hebeiwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 建站 > 正文

行使Dask在Python中举办并行计较

发布时间:2019-04-19 01:34:37 所属栏目:建站 来源:Moshe Zadka
导读:Dask 库可以将 Python 计较扩展到多个焦点乃至是多台呆板。 关于 Python 机能的一个常见诉苦是全局表明器锁(GIL)。因为 GIL,统一时候只能有一个线程执行 Python 字节码。因此,纵然在当代的多核呆板上,行使线程也不会加快计较。 但当你必要并行化到多

行使Dask在Python中举办并行计较

Dask 库可以将 Python 计较扩展到多个焦点乃至是多台呆板。

关于 Python 机能的一个常见诉苦是全局表明器锁(GIL)。因为 GIL,统一时候只能有一个线程执行 Python 字节码。因此,纵然在当代的多核呆板上,行使线程也不会加快计较。

但当你必要并行化到多核时,你不必要放弃行使 Python:Dask 库可以将计较扩展到多个内核乃至多个呆板。某些配置可以在数千台呆板上设置 Dask,每台呆板都有多个内核。固然存在扩展局限的限定,但一样平常达不到。

固然 Dask 有很多内置的数组操纵,但举一个非内置的例子,我们可以计较偏度:

  1. import numpy
  2. import dask
  3. from dask import array as darray
  4.  
  5. arr = dask.from_array(numpy.array(my_data), chunks=(1000,))
  6. mean = darray.mean()
  7. stddev = darray.std(arr)
  8. unnormalized_moment = darry.mean(arr * arr * arr)
  9. ## See formula in wikipedia:
  10. skewness = ((unnormalized_moment - (3 * mean * stddev ** 2) - mean ** 3) /
  11. stddev ** 3)

请留意,每个操纵将按照必要行使尽也许多的内核。这将在全部焦点上并行化执行,纵然在计较数十亿个元素时也是云云。

虽然,并不是我们全部的操纵都可由这个库并行化,偶然我们必要本身实现并行性。

为此,Dask 有一个“耽误”成果:

  1. import dask
  2.  
  3. def is_palindrome(s):
  4. return s == s[::-1]
  5.  
  6. palindromes = [dask.delayed(is_palindrome)(s) for s in string_list]
  7. total = dask.delayed(sum)(palindromes)
  8. result = total.compute()

这将计较字符串是否是回文并返回回文的数目。

固然 Dask 是为数据科学家建设的,但它毫不只限于数据科学。每当我们必要在 Python 中并行化使命时,我们可以行使 Dask —— 无论有没有 GIL。

【责任编辑:庞桂玉 TEL:(010)68476606】
点赞 0

(编辑:河北网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读