Skip to content

Instantly share code, notes, and snippets.

@xwjiang2010
Created November 10, 2021 23:46
Show Gist options
  • Save xwjiang2010/fcfd37618c9a0135a0d806937df280c7 to your computer and use it in GitHub Desktop.
Save xwjiang2010/fcfd37618c9a0135a0d806937df280c7 to your computer and use it in GitHub Desktop.
import ray
from ray.util.placement_group import placement_group, remove_placement_group
import time
NUM_TRIALS = 100
@ray.remote
class Actor:
def __init__(self, *args):
if len(args) > 0:
self._val = args[0]
else:
self._val = 0
def set_val(self, val):
self._val = val
def get_val(self):
return self._val
@ray.remote
def task():
return 2
ray.init()
results = []
start = time.perf_counter()
pg = placement_group([{"CPU": 1}])
actor = Actor.options(placement_group=pg).remote()
for i in range(NUM_TRIALS):
actor.set_val.remote(i)
results.append(ray.get(actor.get_val.remote()))
remove_placement_group(pg)
taken = time.perf_counter() - start
print(f"Reuse actor. Took {taken:.2f} seconds")
results = []
start = time.perf_counter()
for i in range(NUM_TRIALS):
pg = placement_group([{"CPU": 1}])
actor = Actor.options(placement_group=pg).remote(i)
results.append(ray.get(actor.get_val.remote()))
remove_placement_group(pg)
taken = time.perf_counter() - start
print(f"New actor. Took {taken:.2f} seconds")
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment