Python作为目前跨平台应用最火的编程语言,已经被很多行业的研究人员所使用,其实与其他编程语言相同,Python也只支持多线程编程,而且Python对于线程的支持也提供了很多方便的方法可以直接调用,从而可以很好的控制线程的执行。
下面咱们就来聊聊Python对于线程所提供的join()方法吧。
join()方法的功能是可以让一个线程等待另一个线程的完成,是Thread模块所提供的,例如当在一个程序执行流中调用其他线程的join()方法时,调用线程就会被阻塞,一直到被join()方法所加入的join线程执行完成。
其实呢,join()方法通常由使用线程的程序调用,可以理解为将一个大问题划分为很多小问题,然后为每个小问题分配一个线程,当这些小问题都执行处理完毕后,才会回到主程序进一步进行接下来的操作。
为了大家能够比较清晰的理解,咱们来看一下“栗子”吧:
上面咱们所写的程序中,可以看到一共有三个线程,在咱们所写的主程序中开始位置就启动了咱们所命名为“新线程”的子线程,此时这个线程就会和主线程进行并发执行,然后当主线程的循环变量i等于5时,就会启动咱们所命名为“被Join的线程”的线程,这个线程并不会和主线程并发执行,主线程必须等到这个线程执行结束后才会向下执行,所以在“被Join的线程”的线程执行时,实际上是只有两个子线程并发执行的,分别是“新线程”线程和“被Join的线程”线程,而对于主线程此时则是处于等待状态,这就是join()方法的作用。
好啦,下面咱们就调用Python解释器来看一下上面咱们所编写的程序的效果吧:
运行上面程序,就会输出如下三个线程的并发执行情况:
观察上面的输出可以看到,主线程执行到i==5时,程序启动并join了名为“被Join的线程”的线程,所以主线程将一直处于阻塞状态,一直到名为“被Join的线程”的线程执行完成才会跳到主线程“MainThread”中。
最后咱们再来看一下Thread的join()方法的参数吧,其实join()是有参数的,join的语法结构为join(timeout=None),可以看到join()方法有一个timeout参数,其默认值为None,而参数timeout可以进行赋值,其含义是指定等待被join的线程的时间最长为timeout秒,也就是说当在timeout秒内被join的线程还没有执行结束的话,就不再进行等待了。
好啦,以上就是今天咱们所聊的关于Python控制线程中的join线程的相关知识,希望大家能够学会join()方法的调用,今天就聊到这吧,下次再见哦![再见]
一文就能get!带你了解Python模块导入的真相,拿走不谢
一文提升你的编程能力,全面理解Python包的导入,拿走不谢