You neglected to mention POE in your list of alternatives. I use it in favor of threads because it is stable, unlike threads. It manages to do all the work inside a single process with cooperative multitasking. Nothing really runs simultaneously but it can look like it.