Python 线程 从Thread派生一个子类 本文共有3180个字,关键词: 从Thread派生一个子类,创建这个子类的实例,子类化Thread类,MyThread子类的构造函数一定要先调用基类的构造函数,特殊函数__call__()在子类中,名字要改为run()。在MyThread类中加入一些用于调试的输出信息,把代码保存到MyThread模块中,并导入这个类。使用self.func()函数运行这些函数,并把结果保存到实现的self.res属性中,创建一个新函数getResult()得到结果。import threading from time import sleep from datetime import datetime class MyThread(threading.Thread): def __init__(self, func, args, name=''): threading.Thread.__init__(self) self.name = name self.func = func self.args = args def getResult(self): return self.res def run(self): #调用类内的方法 print('*********MyThread Start**********') print('param:---->' + self.name) #完成之后可以调用传入的方法 self.res = self.func(*self.args) print('*********MyThread End**********') def get_date_str(dt): return datetime.strftime(dt, '%Y-%m-%d %H-%M-%S') def subthread(thid, sec): print(f'subthread-线程{thid},Start at {get_date_str(datetime.now())} ,sleep{sec} s') sleep(sec) print(f'subthread-线程{thid},End at {get_date_str(datetime.now())} ,sleep{sec} s') def main(): print('-' * 10 + 'ALL START:' + get_date_str(datetime.now()) + '-' * 10) threads = [] loops = [4, 2] thread_count = range(len(loops)) for i in thread_count: t=MyThread(subthread,(i,loops[i]),subthread.__name__) threads.append(t) for i in thread_count: threads[i].start() for i in thread_count: threads[i].join() # 线程全部结束之后主线程才会退出 print('-' * 10 + 'ALL End:' + get_date_str(datetime.now()) + '-' * 10) if __name__ == '__main__': main() 「一键投喂 软糖/蛋糕/布丁/牛奶/冰阔乐!」 赞赏 × 梦白沙 (๑>ڡ<)☆谢谢老板~ 1元 2元 5元 10元 50元 任意金额 2元 使用微信扫描二维码完成支付 版权声明:本文为作者原创,如需转载须联系作者本人同意,未经作者本人同意不得擅自转载。 Python 2022-04-23 评论 341 次浏览