I haven’t used multiprocessing but I had used in many cases threading. Of course, we need to take care of serious issues of race-cases. I always try to make the thread as isolated as possible with only limited way to interfere with Gtk’s loops.
There are also good support from Gio to call functions in unblocking way.
asyncvariants of methods.- Gio.Task
If the function you wish to run separately will be alive as long as your application (like a server in background), you may use DBus and bridge the app and service using DBus mechanisms. Read Minimal example of GDBus in Python for more information.
Recommended read : Threads & Concurrency - PyGObject
Apart from this, if you “strict” your separate process to not mingle directly with UI, it may help in avoid some “unexpected” errors. You can show us a minimal example that demonstrates the error, so we can help in resolving it, if possible.
Hope it helps.