标签搜索

目 录CONTENT

文章目录

【工具代码】Python 简易多线程类

览平科技
2022-02-18 / 0 评论 / 2 点赞 / 365 阅读 / 346 字 / 正在检测是否收录...
温馨提示:
本文最后更新于 2022-06-03,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

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())
2

评论区