Довольно много раз приходилось её использовать и за это время было выявлено одно неудобство:
в worker нельзя писать не thread-safe код, а иногда бывает надо, например, сделать какой-то запрос к базе данных. Приходилось ставить локеры. А недавно, прочитал про корутины и увидел инлайн колбэки в twisted и подумалось: “А что если, что подобное организовать и здесь?” То есть worker передает функцию, которую нужно выполнить, в основной поток, а затем результат её выполнения возвращается обратно в worker:
def worker(arg): do_something_thread_safe() def do_something_not_thread_safe(): pass result = yield do_something_not_thread_safe do_something_thread_safe(result)