Dask dizileri

Python ile Dask ile Paralel Programlama

James Fulton

Climate informatics researcher

Dizileri parçalama

Tek parça bir dizi gösterir

Python ile Dask ile Paralel Programlama

Dizileri parçalama

Bir dizi çoklu parçaya bölünmüş hâlde gösterir

Python ile Dask ile Paralel Programlama

NumPy vs. Dask dizileri

Tek parça bir dizi gösterir

import numpy as np

x = np.ones((4000, 6000))
print(x.sum())
24000000.0
  • Çalışma süresi: 740 milisaniye

Bir dizi çoklu parçaya bölünmüş hâlde gösterir

import dask.array as da

x = da.ones((4000, 6000), chunks=(1000,2000))
print(x.sum().compute())
24000000.0
  • Çalışma süresi: 60 milisaniye
Python ile Dask ile Paralel Programlama

Dask dizi görev grafiği

Görev grafiğinin dallarının nasıl birleşip nihai sonuca ulaştığını gösterir.

Python ile Dask ile Paralel Programlama

Dask dizi metotları

Dask dizilerinin, NumPy dizilerinin neredeyse tüm metotları vardır.

  • x.max()
  • x.min()
  • x.sum()
  • x.mean()
  • vb.
print(sum_down_columns.compute())
array([1000., 1000., 1000., 1000., 
    1000., 1000., 1000., 1000., 1000.,
    1000.])
Python ile Dask ile Paralel Programlama

Dask dizilerini NumPy dizileri gibi kullanmak

# Dask dizi ile tembel matematik
y1 = x**2 + 2*x + 1

# Tembel dilimleme
y2 = x[:10]

# NumPy fonksiyonlarını uygulamak da tembeldir
y3 = np.sin(x)
print(y1)
dask.array<add, shape=(1000, 10), ...
print(y2)
dask.array<getitem, shape=(10, 10), ...
print(y3)
dask.array<sin, shape=(1000, 10), ...
Python ile Dask ile Paralel Programlama

Görüntü dizilerini yükleme

import dask.array as da

import da.image
image_array = da.image.imread('images/*.png')
print(image_array)
dask.array<imread, shape=(40000, 256, 256, 3), dtype=uint8, 
    chunksize=(1, 256, 256, 3), chunktype=numpy.ndarray>
Python ile Dask ile Paralel Programlama

Özel fonksiyonları parçalara uygulama

def instagram_filter(image):
    ...
    return pretty_image

# Fonksiyonu her görüntüye ayrı ayrı uygula pretty_image_array = image_array.map_blocks(instagram_filter)
print(pretty_image_array)
dask.array<instagram_filter, shape=(40000, 256, 256, 3), dtype=uint8, 
    chunksize=(1, 256, 256, 3), chunktype=numpy.ndarray>
Python ile Dask ile Paralel Programlama

¡Vamos a practicar!

Python ile Dask ile Paralel Programlama

Preparing Video For Download...