I determined that I had to be careful about including in the new process’ memory objects that couldn’t be pickled.
In my case the two issues were (1) functions defined in a local scope (such as closures or partial applications) and (2) class instances being passed in various scopes.
The bottomline was that code that had worked previously with multiprocessing via threads had to be rewritten now that multiprocessing was using completely separate processes.