您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

如何在Python中传递和运行回调方法

如何在Python中传递和运行回调方法

除非具有对管理器的引用,否则该线程无法调用管理器。最简单的方法是管理器在实例化时将其提供给线程。

class Manager(object):
    def new_thread(self):
        return MyThread(parent=self)
    def on_thread_finished(self, thread, data):
        print thread, data

class MyThread(Thread):

    def __init__(self, parent=None):
        self.parent = parent
        super(MyThread, self).__init__()

    def run(self):
        # ...
        self.parent and self.parent.on_thread_finished(self, 42)

mgr    = Manager()
thread = mgr.new_thread()
thread.start()

如果您希望能够将任意函数方法分配为回调,而不是存储对管理器对象的引用,则由于方法包装器等原因,这将带来一些问题。设计回调很困难,因此它需要引用管理器 线程。我做了一段时间,没有提出任何我认为有用或优雅的东西。

python 2022/1/1 18:42:22 有279人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶