Jump to content

Connect SuperML | Leeroopedia MCP: Equip your AI agents with best practices, code verification, and debugging knowledge. Powered by Leeroo — building Organizational Superintelligence. Contact us at founders@leeroo.com.

Implementation:Ray project Ray PyFunction CppFunction Of

From Leeroopedia
Knowledge Sources
Domains Distributed_Computing, Cross_Language_Interop
Last Updated 2026-02-13 17:00 GMT

Overview

Concrete tool for creating cross-language function and actor descriptors provided by the Ray Java SDK.

Description

Factory methods for creating descriptors:

  • PyFunction.of(moduleName, functionName) — Returns PyFunction<Object>
  • PyFunction.of(moduleName, functionName, returnType) — Returns PyFunction<R> with typed return
  • CppFunction.of(functionName) — Returns CppFunction<Object>
  • CppFunction.of(functionName, returnType) — Returns CppFunction<R>
  • PyActorClass.of(moduleName, className) — Returns PyActorClass
  • CppActorClass.of(createFunctionName, className) — Returns CppActorClass

All descriptors are immutable (final fields, private constructors).

Usage

Use the .of() factory methods to create descriptors, then pass them to Ray.task() or Ray.actor().

Code Reference

Source Location

  • Repository: ray-project/ray
  • File: java/api/src/main/java/io/ray/api/function/PyFunction.java (L55-70)
  • File: java/api/src/main/java/io/ray/api/function/CppFunction.java (L20-34)
  • File: java/api/src/main/java/io/ray/api/function/PyActorClass.java (L44-46)
  • File: java/api/src/main/java/io/ray/api/function/CppActorClass.java (L21-23)

Signature

// Python function descriptors
public static PyFunction<Object> PyFunction.of(String moduleName, String functionName)
public static <R> PyFunction<R> PyFunction.of(String moduleName, String functionName, Class<R> returnType)

// C++ function descriptors
public static CppFunction<Object> CppFunction.of(String functionName)
public static <R> CppFunction<R> CppFunction.of(String functionName, Class<R> returnType)

// Python actor class descriptor
public static PyActorClass PyActorClass.of(String moduleName, String className)

// C++ actor class descriptor
public static CppActorClass CppActorClass.of(String createFunctionName, String className)

Import

import io.ray.api.function.PyFunction;
import io.ray.api.function.CppFunction;
import io.ray.api.function.PyActorClass;
import io.ray.api.function.CppActorClass;

I/O Contract

Inputs

Name Type Required Description
moduleName String Yes (Python) Python module name (e.g., "my_module")
functionName String Yes Function or method name
className String Yes (actors) Actor class name
returnType Class<R> No Expected Java return type (default: Object.class)
createFunctionName String Yes (C++ actors) C++ factory function name

Outputs

Name Type Description
descriptor PyFunction<R>/CppFunction<R>/PyActorClass/CppActorClass Lightweight descriptor for Ray.task()/Ray.actor()

Usage Examples

Call Python Function from Java

import io.ray.api.Ray;
import io.ray.api.ObjectRef;
import io.ray.api.function.PyFunction;

// Call a Python function
ObjectRef<String> result = Ray.task(
    PyFunction.of("my_python_module", "greet", String.class),
    "World"
).remote();
System.out.println(result.get()); // "Hello, World!"

Create Python Actor from Java

import io.ray.api.Ray;
import io.ray.api.PyActorHandle;
import io.ray.api.function.PyActorClass;

PyActorHandle actor = Ray.actor(
    PyActorClass.of("my_module", "MyActor"),
    "init_arg"
).remote();

Related Pages

Implements Principle

Requires Environment

Page Connections

Double-click a node to navigate. Hold to expand connections.
Principle
Implementation
Heuristic
Environment