web_python
This commit is contained in:
parent
03beb6970c
commit
e8868b636f
9 changed files with 680 additions and 0 deletions
90
web_python/ray/client_app.py
Normal file
90
web_python/ray/client_app.py
Normal file
|
|
@ -0,0 +1,90 @@
|
|||
from ray import ray
|
||||
from typing import Tuple
|
||||
|
||||
ray.connect("localhost:50051")
|
||||
|
||||
|
||||
@ray.remote
|
||||
class HelloActor:
|
||||
def __init__(self):
|
||||
self.count = 0
|
||||
|
||||
def say_hello(self, whom: str) -> Tuple[str, int]:
|
||||
self.count += 1
|
||||
return ("Hello " + whom, self.count)
|
||||
|
||||
|
||||
actor = HelloActor.remote()
|
||||
s, count = ray.get(actor.say_hello.remote("you"))
|
||||
print(s, count)
|
||||
assert s == "Hello you"
|
||||
assert count == 1
|
||||
s, count = ray.get(actor.say_hello.remote("world"))
|
||||
print(s, count)
|
||||
assert s == "Hello world"
|
||||
assert count == 2
|
||||
|
||||
|
||||
@ray.remote
|
||||
def plus2(x):
|
||||
return x + 2
|
||||
|
||||
|
||||
@ray.remote
|
||||
def fact(x):
|
||||
print(x, type(fact))
|
||||
if x <= 0:
|
||||
return 1
|
||||
# This hits the "nested tasks" issue
|
||||
# https://github.com/ray-project/ray/issues/3644
|
||||
# So we're on the right track!
|
||||
return ray.get(fact.remote(x - 1)) * x
|
||||
|
||||
|
||||
@ray.remote
|
||||
def get_nodes():
|
||||
return ray.nodes() # Can access the full Ray API in remote methods.
|
||||
|
||||
|
||||
print("Cluster nodes", ray.get(get_nodes.remote()))
|
||||
print(ray.nodes())
|
||||
|
||||
objectref = ray.put("hello world")
|
||||
|
||||
# `ClientObjectRef(...)`
|
||||
print(objectref)
|
||||
|
||||
# `hello world`
|
||||
print(ray.get(objectref))
|
||||
|
||||
ref2 = plus2.remote(234)
|
||||
# `ClientObjectRef(...)`
|
||||
print(ref2)
|
||||
# `236`
|
||||
print(ray.get(ref2))
|
||||
|
||||
ref3 = fact.remote(20)
|
||||
# `ClientObjectRef(...)`
|
||||
print(ref3)
|
||||
# `2432902008176640000`
|
||||
print(ray.get(ref3))
|
||||
|
||||
# Reuse the cached ClientRemoteFunc object
|
||||
ref4 = fact.remote(5)
|
||||
# `120`
|
||||
print(ray.get(ref4))
|
||||
|
||||
ref5 = fact.remote(10)
|
||||
|
||||
print([ref2, ref3, ref4, ref5])
|
||||
# should return ref2, ref3, ref4
|
||||
res = ray.wait([ref5, ref2, ref3, ref4], num_returns=3)
|
||||
print(res)
|
||||
assert [ref2, ref3, ref4] == res[0]
|
||||
assert [ref5] == res[1]
|
||||
|
||||
# should return ref2, ref3, ref4, ref5
|
||||
res = ray.wait([ref2, ref3, ref4, ref5], num_returns=4)
|
||||
print(res)
|
||||
assert [ref2, ref3, ref4, ref5] == res[0]
|
||||
assert [] == res[1]
|
||||
Loading…
Add table
Add a link
Reference in a new issue