
网上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() # 启动线程