Python 简易多线程类
自定义SimpleThread类
import threading
class SimpleThread(threading.Thread):
def __init__(self, func, args={}):
'''
:param func: function to run
:param args: arguments to pass to func
'''
super(SimpleThread, self).__init__()
self.func = func # 执行函数
self.args = args # 执行参数,其中包含切分后的数据块,字典类型
def run(self):
self.result = self.func(**self.args)
def get_result(self):
'''
:return: result of func
'''
try:
return self.result
except Exception:
return None
上述自定义简易现成类SimpleThread可为多线程执行函数func
传递参数args
。
args
为dict类型,其中key为多线程执行函数func
形参名称(字符串形式),value为实参变量。
简单使用示例
这里,用12+22+32+42+52+62+72+82+92+102的小例子来展示上述简易多线程类SimpleThread的使用方式。
def square_func(a, b):
return a+b
if __name__ == '__main__':
threads = []
loops = 10
for i in range(loops):
# 参数以dict格式输入,keys要与执行函数的形参名字对应
t = SimpleThread(square_func, {'a': i, 'b': i})
threads.append(t)
for i in range(loops): # start threads 此处并不会执行线程,而是将任务分发到每个线程,同步线程。等同步完成后再开始执行start方法
threads[i].start()
for i in range(loops): # jion()方法等待线程完成
threads[i].join()
print(threads[i].get_result())
评论区