I find it strange that more attention hasn't been paid to the more obvious path: Multiple interpreters in one process. You can safely run a separate Python interpreter in each thread of a process. More overhead than threading, but less than multiprocessing, and takes care of both the Windows forking problem and the general unix "housekeeping" problem.