mirror of
https://github.com/wassname/ray.git
synced 2026-06-30 16:32:35 +08:00
Change TaskSpec to allow multiple object IDs per argument. (#1204)
* Implement object ID bags * linting * fix tests * fix linting * fix comments
This commit is contained in:
committed by
Robert Nishihara
parent
07f0532b9b
commit
e798a652bc
@@ -315,7 +315,8 @@ static int PyTask_init(PyTask *self, PyObject *args, PyObject *kwds) {
|
||||
for (Py_ssize_t i = 0; i < size; ++i) {
|
||||
PyObject *arg = PyList_GetItem(arguments, i);
|
||||
if (PyObject_IsInstance(arg, (PyObject *) &PyObjectIDType)) {
|
||||
TaskSpec_args_add_ref(g_task_builder, ((PyObjectID *) arg)->object_id);
|
||||
TaskSpec_args_add_ref(g_task_builder, &((PyObjectID *) arg)->object_id,
|
||||
1);
|
||||
} else {
|
||||
/* We do this check because we cast a signed int to an unsigned int. */
|
||||
PyObject *data = PyObject_CallMethodObjArgs(pickle_module, pickle_dumps,
|
||||
@@ -391,9 +392,10 @@ static PyObject *PyTask_arguments(PyObject *self) {
|
||||
int64_t num_args = TaskSpec_num_args(task);
|
||||
PyObject *arg_list = PyList_New((Py_ssize_t) num_args);
|
||||
for (int i = 0; i < num_args; ++i) {
|
||||
if (TaskSpec_arg_by_ref(task, i)) {
|
||||
ObjectID object_id = TaskSpec_arg_id(task, i);
|
||||
PyList_SetItem(arg_list, i, PyObjectID_make(object_id));
|
||||
int count = TaskSpec_arg_id_count(task, i);
|
||||
if (count > 0) {
|
||||
assert(count == 1);
|
||||
PyList_SetItem(arg_list, i, PyObjectID_make(TaskSpec_arg_id(task, i, 0)));
|
||||
} else {
|
||||
CHECK(pickle_module != NULL);
|
||||
CHECK(pickle_loads != NULL);
|
||||
|
||||
Reference in New Issue
Block a user