python中start和run方法有什么区别(python,run,start,开发技术)

时间:2024-05-02 04:03:05 作者 : 石家庄SEO 分类 : 开发技术
  • TAG :

    python%E4%B8%ADstart%E5%92%8Crun%E6%96%B9%E6%B3%95%E6%9C%89%E4%BB%80%E4%B9%88%E5%8C%BA%E5%88%AB

结论:启动线程,如果对target进行赋值,并且没有重写run方法,则线程start的时候会直接调用target中对应的方法

具体代码如下:
1、初始化一个线程

2、调用start启动线程
最终调用_start_new_thread方法,self._bootstrap作为传参

3、_start_new_thread等同于启动一个新线程,并在新线程中调用回调函数

4、执行的回调函数就是上文传入的self._bootstrap, _bootstrap方法直接调用_bootstrap_inner(),而bootstrap_inner则调用run方法

5、最终调用run方法

结论:
如果run方法被重写,则直接调用重写的run方法
如果run方法没有被重写,并且target被定义,则会直接调用线程创建时候的target方法,否则什么也不做

此处遇到一问题:
指定target参数,在执行过程中,打印的进程名mainthread(主进程),而不是之前所赋的进程名
threading.Thread.init(self,target=thread_run())
分析后发现赋予target的是执行的函数体,因此会先执行thread_run函数,执行结束后,将thread_run的返回值赋给了target,因为thread_run没有返回值,因此target的值是None,如果此时没有重写run函数,那么线程什么都不会做。 thread_run的执行是在主线程,而不是我们所认为的在子线程中执行thread_run

运行结果:

overwrite: 开始线程:MainThread
overwrite: 退出线程:MainThread
退出主线程

本文:python中start和run方法有什么区别的详细内容,希望对您有所帮助,信息来源于网络。
上一篇:C#如何实现图表中鼠标移动并显示数据下一篇:

6 人围观 / 0 条评论 ↓快速评论↓

(必须)

(必须,保密)

阿狸1 阿狸2 阿狸3 阿狸4 阿狸5 阿狸6 阿狸7 阿狸8 阿狸9 阿狸10 阿狸11 阿狸12 阿狸13 阿狸14 阿狸15 阿狸16 阿狸17 阿狸18