网上Python现有的回调都是把函数作为参数传递到函数,但是我有一个场景就是,如何把类里面的耗时的数据回调出去,这样别人调用我的类就只管处理回调数据而不用写额外代码,这样的场景经常使用比如下载时候进度提示、socket通信中的接收数据等等,基本都会用到这个回调,很可惜的是网上查了一大圈没有找到办法,最后还是自己摸索出来,首先我定义一个A类,test.py
from threading import Thread class A(object): def __init__(self, callback): self.mycallback = callback @staticmethod def dowork(self): for i in range(5000): self.mycallback(i)
A里面模拟一个耗时操作,之后我就如下做就可以实现回调
from test import * from threading import Thread def mycallback(i): print(i) a = A(mycallback) t = Thread(target=a.dowork, args=(a,)) # 创建线程 t.start() # 启动线程