Python中Thread类的start和run方法的区别

 我来答
从空去听8
2017-11-14 · TA获得超过7439个赞
知道大有可为答主
回答量:6907
采纳率:93%
帮助的人:5561万
展开全部

这两个方法都能开始线程活动,但是用法不同,其区别与Java Thread类中start()和run()的区别类似。

先来看官方文档的说明:


翻译过来就是:

start()方法

开始线程活动。

对每一个线程对象来说它只能被调用一次,它安排对象在一个另外的单独线程中调用run()方法(而非当前所处线程)。

当该方法在同一个线程对象中被调用超过一次时,会引入RuntimeError(运行时错误)。

run()方法

代表了线程活动的方法。

你可以在子类中重写此方法。标准run()方法调用了传递给对象的构造函数的可调对象作为目标参数,如果有这样的参数的话,顺序和关键字参数分别从args和kargs取得。

为了测试写了如下代码:

[python] view plain copy

  • #!/usr/bin/python  

  • # coding=utf-8  

  • import threading  

  • class myThread(threading.Thread):  

  • def __init__(self, threadID, name, counter):  

  • threading.Thread.__init__(self)  

  • self.threadID = threadID  

  • self.name = name  

  • self.counter = counter  

  • def run(self):  

  • currentTreadname = threading.currentThread()  

  • print "running in", currentTreadname  

  • thread = myThread(1,"mythrd",1)  

  • thread.run()  

  • thread.start()  

  • myThread继承自Thread类,我重写了它的构造函数和run()方法,run()方法通过currentThread()获取当前所处线程名称并用print函数打印

    然后程序分别执行run()和start()方法

    输出结果如下:


    可以看到两个方法分别处于MainThread和myThread线程中

类人界异
2018-01-15 · TA获得超过1313个赞
知道小有建树答主
回答量:349
采纳率:73%
帮助的人:76.2万
展开全部
run()是线程在运行时要执行的方法。
start()是启动线程的方法。
线程启动后执行run方法
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式