Можно использовать события или как Grauenwolf заявил - сигнал сообщения. Я обертываю каждый свой поток как одиночный элемент управления, оттуда можно реализовать любого легко. Вы могли даже сделать плохие общественные собственности человека для зеркального отражения битов.
Также Вы могли реализовать конечный автомат, и вместо передачи обменивается сообщениями, каждый поток мог контролировать друг друга
используйте
current_module.new_name = func
или
setattr(current_module, new_name, func)
Похоже, решением вашей проблемы было бы заставить декорированную функцию действовать как исходную.
Попробуйте использовать функцию mergeFunctionMetadata
из Twisted, найденную здесь:
twisted / python / util.py
Это заставляет вашу декорированную функцию действовать как оригинальную, надеясь, что фреймворк подхватит ее.