python多线程

现在的CPU都是多核的,但是我们写的程序大部分都是单核的,为了缩短跑特征的时间,在此介绍下非常有用的python3多线程。

import threading

# 自定义的多线程工具类,
class myThread(threading.Thread):
    # thread_name 线程名称,方便调试
    # func 回调函数
    # begin,end是参数,这里可以该进程不定参数
    def __init__(self, thread_name, func, begin, end):
        threading.Thread.__init__(self)
        self.thread_name = thread_name
        self.func = func
        self.begin = begin
        self.end = end

    # 实现run方法,将返回值存在self.result中,当线程join之后,获取该值
    def run(self):
        print("开启线程: " + self.name)
        self.result = self.func(self.begin, self.end)

    # 获取result的方法
    def get_result(self):
        return self.result

下面随便写一个例子调用下

    def mutiple_thread_test(self):
        # 根据机器的物理线程数量来指定线程个数
        thread_numbers = cpu_count()

        # 创建一个数组,来保存每个子线程
        threads = []

        # 创建线程,self.count是一个实现独立计数的方法,每个线程都计数100000下
        for i in range(thread_numbers):
            t = myThread("thread" + str(i), self.count, i * 100000, (i + 1) * 100000- 1)
            threads.append(t)
            t.start()

        # 通过join来等待所有线程都执行结束,然后将结果汇总
        result = 0
        for t in threads:
            t.join()
            result += t.get_result()

       print(result)

大框架就是如此,大家可以根据自己的需求,将一个大任务分割成多个可以并行处理的小任务,可以缩短好几倍时间哟。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值