- 追加された行はこのように表示されます。
- 削除された行は
このように表示されます。
!! Python マルチ API
! インストール
./00venv/bin/pip3 install --upgrade ray
! 起動方法
ヘッドノード(pythonスクリプトを起動するノード)
./00venv00/bin/ray start --head --port=6379
ワーカーノード
./00venv00/bin/ray start --address='<ヘッドノードのIP>:6379'
## ./00venv00/bin/ray start --address='192.168.21.201:6379'
firewalld への追加
# firewall-cmd --add-port=6379/tcp --zone=public
! サンプル
pythonコードをヘッドノードで起動する
----
#!/bin/env python3
# -*- coding: utf-8 -*-
import ray
import time
@ray.remote
def worker_func(pid):
time.sleep(5)
return f"pid {pid} finished"
ray.init()
start = time.time()
results = [worker_func.remote(i) for i in range(20)]
print(ray.get(results))
print("Elapsed:", time.time() - start)
----
numba と Ray の混在(@njit をRayから呼び出す??)
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import numpy as np
from numba import njit
import ray
@njit(fastmath=True)
def mz_centroid(_int_f, _mz_f):
return ((_int_f/_int_f.sum()) * _mz_f).sum()
@ray.remote
def f():
a = np.random.random(10)
b = 123
return mz_centroid(a, b)
ray.init()
results = ray.get([f.remote() for i in range(10)])
print(results)
----