python销毁线程_聊聊 Python 中的线程

e7cd7b899e510fb3833baf7079e40593d0430c11.jpeg?token=a5e6f4e17edd121ef7ca97eddf6f2fb6

01什么是线程?

线程是操作系统能够进行运算调度的最小单位,它隶属于进程之中,也有人叫它轻量级进程。线程自己没有系统资源,它可与同属一个进程的其它线程共享进程中的资源,同一进程中的多个线程可以并发运行。

python 语言中内置了 threading 库对多线程功能的支持,从而简化 Python 语言的多线程编程。

02线程实现

普通创建线程的方法

在程序中引入 thrading 库,实现创建一个简单的线程

8ad4b31c8701a18b3414d8480bf8ca0e2938fe1d.png?token=89cb5df0926e1b625110e8a152d23559

初始化一个线程

threading.Thread(target=run, args=("t1",))

调用 start 方法启动线程

当线程启动之后,会调用 run 方法,执行打印传入线程的参数信息

这是运行结果

a08b87d6277f9e2f508477128be72422b999f351.png?token=a91caf40d19a49f5f8c702b54105d8ed

thread.is_alive() 查看线程是否正在运行

5ab5c9ea15ce36d34a32ef1aae24f781e850b1c0.png?token=4fe7c59dd38d2759e367aef8b58101a4

thread.join() 连接到某个线程上,join 会等待该线程结束,解释器会一直保持运行,直到所有的线程都终结为止。

守护线程

当需要长时间或一直不断在后台运行任务时,这就需要考虑守护线程,将线程设置为 daemon。

t1 = threading.Thread(target=run, args=("t1",), daemon=True)

在初始化线程时设置 daemon 为 True ,开启守护线程。daemon 线程是无法被 join 的,当主线程结束后就会自动销毁掉。

03为什么使用多线程

线程在程序中是相对独立的执行流,与分隔的进程相比,线程具有轻量级、灵活、支持并发、线程与线程之间可以通信等优点。线程与线程之间隔离度小,共享句柄、内存和其它进程应有的状态。

因为线程相对于进程有以上诸多优点,在应用程序开发中使用多线程技术就会极大地提高应用程序的效率。多个线程共享内存,节约了系统资源,使一个进程下可以并发地运行多个线程,完成搞了高效的系统计算能力。

线程与线程之间更利于通信,一个应用程序的功能并不是也一般不会存在孤立的存在,不同功能模块之间需要进行数据交互,也可能需要同时运行,这就得依靠多线程与线程与线程之间的通信来完成。

操作系统创建进程时,需要单独的为进程分配独立的内存空间,而线程就相对简单很多。在操作系统中,内存资源是有限的,如何将有限的资源最大化利用,这就得让我我们考虑如何合理、灵活地运用多线程技术来实现。

总结

1、进程之间不能共享系统资源,进程与进程之间的通信业比较麻烦,相比线程就灵活很多;

2、操作系统在创建进程时,需要重新为进程分配资源,而操作系统中的资源有限,创建线程相对于创建进程就要好很多;

3、多个线程共享资源,可并发运行,相对于进程来说,运行效率就会高了不少。

感谢你的阅读,欢迎关注作者,作者会不定期更新 Python 硬核知识。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值