自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

使用Dask在Python中進(jìn)行并行計(jì)算

開發(fā) 后端
關(guān)于 Python 性能的一個(gè)常見抱怨是全局解釋器鎖(GIL)。由于 GIL,同一時(shí)刻只能有一個(gè)線程執(zhí)行 Python 字節(jié)碼。因此,即使在現(xiàn)代的多核機(jī)器上,使用線程也不會(huì)加速計(jì)算。

[[262844]]

 Dask 庫(kù)可以將 Python 計(jì)算擴(kuò)展到多個(gè)核心甚至是多臺(tái)機(jī)器。

關(guān)于 Python 性能的一個(gè)常見抱怨是全局解釋器鎖(GIL)。由于 GIL,同一時(shí)刻只能有一個(gè)線程執(zhí)行 Python 字節(jié)碼。因此,即使在現(xiàn)代的多核機(jī)器上,使用線程也不會(huì)加速計(jì)算。

但當(dāng)你需要并行化到多核時(shí),你不需要放棄使用 Python:Dask 庫(kù)可以將計(jì)算擴(kuò)展到多個(gè)內(nèi)核甚至多個(gè)機(jī)器。某些設(shè)置可以在數(shù)千臺(tái)機(jī)器上配置 Dask,每臺(tái)機(jī)器都有多個(gè)內(nèi)核。雖然存在擴(kuò)展規(guī)模的限制,但一般達(dá)不到。

雖然 Dask 有許多內(nèi)置的數(shù)組操作,但舉一個(gè)非內(nèi)置的例子,我們可以計(jì)算偏度

  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)

請(qǐng)注意,每個(gè)操作將根據(jù)需要使用盡可能多的內(nèi)核。這將在所有核心上并行化執(zhí)行,即使在計(jì)算數(shù)十億個(gè)元素時(shí)也是如此。

當(dāng)然,并不是我們所有的操作都可由這個(gè)庫(kù)并行化,有時(shí)我們需要自己實(shí)現(xiàn)并行性。

為此,Dask 有一個(gè)“延遲”功能:

  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()

這將計(jì)算字符串是否是回文并返回文的數(shù)量。

雖然 Dask 是為數(shù)據(jù)科學(xué)家創(chuàng)建的,但它絕不僅限于數(shù)據(jù)科學(xué)。每當(dāng)我們需要在 Python 中并行化任務(wù)時(shí),我們可以使用 Dask —— 無論有沒有 GIL。

 

責(zé)任編輯:龐桂玉 來源: Linux中國(guó)
相關(guān)推薦

2023-07-10 13:51:45

測(cè)試并行計(jì)算框架

2011-04-20 17:15:21

并行計(jì)算

2011-04-21 09:13:14

并行計(jì)算

2012-08-17 09:32:52

Python

2021-08-27 14:36:01

主題建模BerTopic

2010-03-22 14:45:40

云計(jì)算

2018-03-13 12:51:12

Python數(shù)據(jù)函數(shù)

2018-06-07 15:58:52

Python函數(shù)數(shù)據(jù)

2024-10-21 16:54:43

NumPyPython并行計(jì)算

2021-06-01 05:51:37

云計(jì)算并行計(jì)算分布式計(jì)算

2009-12-18 09:38:27

.NET 4.0并行計(jì)

2020-03-07 18:00:17

logzeroPython日志記錄

2014-04-24 10:25:15

2010-03-19 17:23:45

云計(jì)算

2023-10-18 18:31:04

SQL查詢數(shù)據(jù)

2023-08-02 08:02:30

Redis數(shù)據(jù)原生方法

2020-06-30 08:23:00

JavaScript開發(fā)技術(shù)

2014-01-21 11:16:59

MPI并行計(jì)算

2009-06-22 10:29:11

集成測(cè)試Spring

2024-05-06 13:34:28

WireGoogleGo
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)