Python并发与并行(3)——线程的安插

本节开始前先让我们看个例子:

import threading
import time

def thread_job():
    print("T1 start\n")
    time.sleep(1)
    print("T1 finish\n")

added_thread = threading.Thread(target=thread_job, name='T1')
added_thread.start()
print("all done\n")

大家可以多运行几次,会发现可能出现如下结果:

T1 start

all done

T1 finish

这是因为在T1 start执行后,线程转向去执行主线程main,主线程执行完成后才到子线程去执行剩下的语句,但如果我们想让子线程结束后才运行主线程该如何做呢?这就需要用到.join()方法。.join()的意思是讲线程加入另一线程的执行当中,另一线程会等待被加入的线程工作完成轴再继续原线程运行。这就好比有一项工作正在进行,结果老板又安排了另一项工作,并且要求你新安排的工作要先做完,然后再执行原来工作。将程序修改如下,多运行几次,可以看出在子线程结束后,主线程才结束:

import threading
import time

def thread_job():
    print("T1 start\n")
    time.sleep(1)
    print("T1 finish\n")

added_thread = threading.Thread(target=thread_job, name='T1')
added_thread.start()
added_thread.join()
print("all done\n")

结果:

T1 start

T1 finish

all done

有时候加入的线程可能处理时间比较长,我们又不想等待如此长时间使这个进程执行完毕,可以在.join()中规定指定的时间,如.join(10)

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 一. 操作系统概念 操作系统位于底层硬件与应用软件之间的一层.工作方式: 向下管理硬件,向上提供接口.操作系统进行...
    月亮是我踢弯得阅读 6,014评论 3 28
  • 林炳文Evankaka原创作品。转载自http://blog.csdn.net/evankaka 本文主要讲了ja...
    ccq_inori阅读 671评论 0 4
  • Java多线程学习 [-] 一扩展javalangThread类 二实现javalangRunnable接口 三T...
    影驰阅读 2,994评论 1 18
  • 【JAVA 线程】 线程 进程:是一个正在执行中的程序。每一个进程执行都有一个执行顺序。该顺序是一个执行路径,或者...
    Rtia阅读 2,783评论 2 20
  • 本文主要讲了java中多线程的使用方法、线程同步、线程数据传递、线程状态及相应的一些线程函数用法、概述等。 首先讲...
    李欣阳阅读 2,503评论 1 15