01什么是线程?
线程是操作系统能够进行运算调度的最小单位,它隶属于进程之中,也有人叫它轻量级进程。线程自己没有系统资源,它可与同属一个进程的其它线程共享进程中的资源,同一进程中的多个线程可以并发运行。
python语言中内置了threading库对多线程功能的支持,从而简化Python语言的多线程编程。
02线程实现
普通创建线程的方法
在程序中引入thrading库,实现创建一个简单的线程
初始化一个线程
threading.Thread(target=run,args=(t1,))
调用start方法启动线程
当线程启动之后,会调用run方法,执行打印传入线程的参数信息
这是运行结果
thread.is_alive()查看线程是否正在运行
thread.join()连接到某个线程上,join会等待该线程结束,解释器会一直保持运行,直到所有的线程都终结为止。
守护线程
当需要长时间或一直不断在后台运行任务时,这就需要考虑守护线程,将线程设置为daemon。
t1=threading.Thread(target=run,args=(t1,),daemon=True)
在初始化线程时设置daemon为True,开启守护线程。daemon线程是无法被join的,当主线程结束后就会自动销毁掉。
03为什么使用多线程
线程在程序中是相对独立的执行流,与分隔的进程相比,线程具有轻量级、灵活、支持并发、线程与线程之间可以通信等优点。线程与线程之间隔离度小,共享句柄、内存和其它进程应有的状态。
因为线程相对于进程有以上诸多优点,在应用程序开发中使用多线程技术就会极大地提高应用程序的效率。多个线程共享内存,节约了系统资源,使一个进程下可以并发地运行多个线程,完成搞了高效的系统计算能力。
线程与线程之间更利于通信,一个应用程序的功能并不是也一般不会存在孤立的存在,不同功能模块之间需要进行数据交互,也可能需要同时运行,这就得依靠多线程与线程与线程之间的通信来完成。
操作系统创建进程时,需要单独的为进程分配独立的内存空间,而线程就相对简单很多。在操作系统中,内存资源是有限的,如何将有限的资源最大化利用,这就得让我我们考虑如何合理、灵活地运用多线程技术来实现。
总结
1、进程之间不能共享系统资源,进程与进程之间的通信业比较麻烦,相比线程就灵活很多;
2、操作系统在创建进程时,需要重新为进程分配资源,而操作系统中的资源有限,创建线程相对于创建进程就要好很多;
3、多个线程共享资源,可并发运行,相对于进程来说,运行效率就会高了不少。
零基础入门学习Python(第2版)京东月销量好评率97%无理由退换京东配送官方店¥70.3购买感谢你的阅读,欢迎