python,threading模块,继承threading.Thread类实现多线程

我是胖超人,chubbysuperman
实现多线程的方法有很多,我只喜欢这一种。先说说思路,后边上代码。

  1. 写好需要使用多线程的功能。示例代码中为函数:tr
  2. 定义一个类,继承threading.Thread。示例代码中为:Mythread
  3. 初始化父类。示例代码中:init(self)
  4. 重写父类的run方法。
  5. 获取线程锁。示例代码中:lock.acquire()。注意:此处应为threading.Thread.Lock().acquire(),但是示例代码中已给出锁对象,所以可以写为lock.acquire()
  6. 调试。

以上为我的思路,下面上代码。

#__author__ = 'chubby_superman'
#_*_coding=utf-8 _*
import threading
import time

#定义一个方法
def tr(a,b):
    print([x for x in range(a+b)])
    pass

class Mythread(threading.Thread):
    #使用继承实现多线程
    def __init__(self,func):
        threading.Thread.__init__(self)
        self.func=func  #功能名
        #self.args=args  #功能所需参数
    #初始化父类  threading.Thread
    def run(self):
        lock = threading.Lock()
        if lock.acquire():
            self.func  #调用run方法,实现功能的多线程
            print(self.name,time.ctime())
            lock.release()
    #给需要实现多线程的功能 加锁。注意:run方法为重写父类threading.Thread的run方法,函数名不得改变,且此方法必须有。
if __name__=="__main__":
    thread_list=[]
    for i in range(5):  #需要开启多少线程,range中的数字填多少,此处需要5个
        t = thread_list.append(Mythread(tr(3,4)))
    for t in thread_list:
        t.start()
    for t in thread_list:
        t.join()


根据我的理解:其实python中的多线程很鸡肋 因为python解释器的gil锁是单线程的,所以在不解开gil锁的前提下,写多线程屁用没有,如果需要满载cpu,那就得用协程。但是不得不说,对于io密集型任务,多线程还是有他的优势的。当然,仅仅是我这个小菜鸟的理解,欢迎大神指正。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值