Page 236 - 6734
P. 236

задач,   оптимізоване    для    інтерактивних    обчислювальних
           навантажень, та прості шляхи масштабування задач  Pandas, Scikit-
           Learn  і  Numpy.  Дозволяє  легко  паралелізувати  довільний  Python-
           алгоритм  шляхом  створення  “лінивих”  функцій  з  відкладеним
           виконанням.  Функція  dask.delayed  обгортає  довільну  функцію
           так,  що  вона  не  виконується  миттєво,  а  створює  граф  задач.
           Передача  відкладених  результатів  іншим  відкладеним  функціям
           створює  залежності  між  задачами.  Обчислити  результати
           паралельно можна за допомогою методу compute. Нижче наведено
           приклад алгоритму, який паралелізується. Для виконання прикладу
           на кластері див. приклад Dask.Distributed.
           from dask.distributed import Client
           from dask import delayed
           import time
           def f(x): # функція, яка буде виконуватись в окремих
           процесах
               time.sleep(x)
               return x
           if __name__ == '__main__':
               #client = Client() # клієнт (кластер на локальній
           машині)
               client = Client('192.168.1.33:8786') # клієнт
               res=[]
               for x in [1,2,3,4]:
                   f_ = delayed(f)(x) # відкладене виконання
           функції f
                   res.append(f_) # додати відкладений результат
           у список
               sum_=delayed(sum)(res) # відкладене виконання
           функції sum
               print sum_.compute() # обчислити
           f(1),f(2),f(3),f(4) паралельно, а потім обчислити
           їхню суму

           10
                                         235
   231   232   233   234   235   236   237   238   239   240   241