Does a Ray Async/Threaded Actor pickle/unpickle in parallel

How severe does this issue affect your experience of using Ray?

  • High: It blocks me to complete my task.

Hello everyone :wave:

Was just wondering if a single Async or Threaded Ray Actor is able to pickle or unpickle actor method invocations in parallel?

Hoping other people might have investigated this already!

Looking forward to hearing from the Ray community :smiley:


I assume you mean pickle/unpickle/ of the method arguments : this will happen in parallel as each task runs concurrently, both for the asyncio or threading actor case

The actor (and its methods) are created (pickedl/unpickled) once, on actor creation, and the method invocation will trigger the corresponding method call of the actor.

Hi Clarence,

Appreciate the fast reply!

Just to clarify, by method arguments, I am talking about the arguments that you would pass into foo_actor.do_something.remote(arg1, arg2, ...) in order to call the Ray Actor that has the method do_something. I know arg1, arg2 (the args) will be pickled and sent to the Ray Actor, and at the Ray Actor side it will be unpickled and then used by the actual do_something method. But lets say our Ray Actor is threaded and has max_concurrency > 0, lets say that there are multiple simultaneous invocations (foo_actor.do_something.remote(arg1, arg2, ...), …), will the simultaneous serialised arguments received by the Ray Actor be deserialised in true parallel?

Was wondering how this can be done in parallel? I thought you must acquire the GIL before accessing the state of a Python object which would force the multiple pickling (or unpickling) to be serial?