def __init__(self, worker): self.worker = worker self._thread_local = threading.local() def actor_handle_reducer(obj): ray.worker.global_worker.check_connected() serialized, actor_handle_id = obj._serialization_helper() # Update ref counting for the actor handle self.add_contained_object_ref(actor_handle_id) return _actor_handle_deserializer, (serialized,) self._register_cloudpickle_reducer(ray.actor.ActorHandle, actor_handle_reducer) def object_ref_reducer(obj): worker = ray.worker.global_worker worker.check_connected() self.add_contained_object_ref(obj) obj, owner_address, object_status = worker.core_worker.serialize_object_ref( obj ) return _object_ref_deserializer, ( obj.binary(), obj.call_site(), owner_address, object_status, ) self._register_cloudpickle_reducer(ray.ObjectRef, object_ref_reducer) serialization_addons.apply(self)
def __init__(self, worker): self.worker = worker self._thread_local = threading.local() def actor_handle_reducer(obj): serialized, actor_handle_id = obj._serialization_helper() # Update ref counting for the actor handle self.add_contained_object_ref(actor_handle_id) return actor_handle_deserializer, (serialized, ) self._register_cloudpickle_reducer(ray.actor.ActorHandle, actor_handle_reducer) def object_ref_reducer(obj): self.add_contained_object_ref(obj) worker = ray.worker.global_worker worker.check_connected() obj, owner_address = ( worker.core_worker.serialize_and_promote_object_ref(obj)) return object_ref_deserializer, (obj.__reduce__(), owner_address) # Because objects have default __reduce__ method, we only need to # treat ObjectRef specifically. self._register_cloudpickle_reducer(ray.ObjectRef, object_ref_reducer) serialization_addons.apply(self)