python中start是什么意思,python中start()方法

  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的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: