python中start是什么意思,python中start()方法
大家好,本篇文章主要讲的是大蟒中开始和奔跑方法的区别,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下
结论:启动线程,如果对目标进行赋值,并且没有重写奔跑方法,则线程开始的时候会直接调用目标中对应的方法
具体代码如下:
1、初始化一个线程
threading.Thread.__init__(self,target=thread_run())
def __init__(self,group=None,target=None,name=None,
args=(),kwargs=None,*,daemon=None):
断言组为没有组参数现在必须为无
如果参数不是:
kwargs={}
自我. target=目标
自我. name=str(name or _newname())
自我. args=args
自我2008 _ kwargs=kwargs。
2、调用开始启动线程
最终调用_开始_新_线程方法,自我。_引导程序作为传参
thread1.start()
定义开始(自身):
如果不是自我。_初始化:
引发RuntimeError(thread .__init__()未被调用)
如果自我. started.is_set():
引发RuntimeError("线程只能启动一次")
with _active_limbo_lock:
_limbo[self]=自我
尝试:
_开始_新_线程(自身。_引导,())
除了例外:
with _active_limbo_lock:
del _ limbo[自我]
上升
自我. started.wait()
3、开始新线程等同于启动一个新线程,并在新线程中调用回调函数
_ start _ new _ thread=线程。开始新线程
def start _ new _ thread(函数: Callable[.Any],args: tuple[Any,],kwargs: dict[str,Any]=.)- int:
4、执行的回调函数就是上文传入的自我。_自举,_自举方法直接调用_bootstrap_inner(),而自举_内部则调用奔跑方法
def _bootstrap_inner(self):
尝试:
自我. set_ident()
自我. set_tstate_lock()
if _HAVE_THREAD_NATIVE_ID:
自我. set_native_id()
自我. started.set()
with _active_limbo_lock:
_ active[self]._ident]=self
del _ limbo[自我]
如果_跟踪_挂钩:
_sys.settrace(_trace_hook)
if _profile_hook:
_sys.setprofile(_profile_hook)
尝试:
self.run()
5、最终调用奔跑方法
定义运行(自身):
尝试:
如果自我. target:
自我。_目标(*自我. args,**self ._kwargs)
最后:
#如果线程正在运行函数,请避免再循环
#具有指向线程的成员的参数。
德尔赛尔夫。_目标,自我. args,self ._kwargs
结论:
如果奔跑方法被重写,则直接调用重写的奔跑方法
如果奔跑方法没有被重写,并且目标被定义,则会直接调用线程创建时候的目标方法,否则什么也不做
此处遇到一问题:
指定目标参数,在执行过程中,打印的进程名主线程(主进程),而不是之前所赋的进程名
init(self,target=thread_run())
分析后发现赋予目标的是执行的函数体,因此会先执行线程_运行函数,执行结束后,将线程_运行的返回值赋给了目标,因为线程_运行没有返回值,因此目标的值是没有,如果此时没有重写奔跑函数,那么线程什么都不会做线程_运行的执行是在主线程,而不是我们所认为的在子线程中执行线程_运行
定义thread_run():
打印(覆盖:开始线程: threading.current_thread().姓名)
时间。睡眠(2)
打印(覆盖:退出线程: threading.current_thread().姓名)
类myThread(线程。螺纹):
def __init__(self,threadID,name,delay):
threading.Thread.__init__(self,target=thread_run())
self.threadID=threadID
self.name=name
自我延迟=延迟
thread1.start()
thread1.join()
打印(“退出主线程”)
运行结果:
Overwrite:开始线程:MainThread
覆盖:退出线程:MainThread
退出主线程
关于python中start和run方法的区别,本文到此结束。有关python启动和运行方法的更多信息,请搜索流行的IT软件开发工作室以前的文章或继续浏览下面的相关文章。希望你以后能支持热门的IT软件开发工作室!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。