python多线程----------主线程,子线程,任务讲解----拿下就是胜利

这篇具有很好参考价值的文章主要介绍了python多线程----------主线程,子线程,任务讲解----拿下就是胜利。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

这一篇博客主要介绍给分不清楚主线程.子线程的小可爱们

在之前的一篇博客中我简单的介绍了并发,并行

并发:是在时段的完成多个任务 ,但是每个时间点只有一个任务运行

而多线程就是这一个原理

非守护线程

代码:

from threading import Thread
import requests
from selenium import webdriver
import time
# 并发 cpu数量小于执行任务数量 比如一个cpu运行多个进程
# 并行 cpu数量大于任务数量, 比如4个cpu运行4个进程


def sing():
    # 子线程
    for i in range(5):
        print("我是打打怪")


def dance():
    # 任务
    # for i in range(5):
    #     print("我是小小怪")
    #     time.sleep(1)
    print("11")
    print("22")
    time.sleep(1)
    print("33")


"""主线程"""
if __name__ == '__main__':
    a = time.time()
    # 创建5个子线程,每个子线程都发送一次dance()任务,非守护线程不会等待主线程运行结束而结束,而守护停止是在主线程和非守护运行完成后停止
    for i in range(5):
        t1 = Thread(target=dance)
        # 线程创建按完成
        t1.start()
    b = time.time()
    print(b - a)

结果:

python多线程----------主线程,子线程,任务讲解----拿下就是胜利

可以看出主线程执行完成,但是子线程还在运行,这就是非守护线程(子线程),

非守护线程:就是主线程运行结束,还在运行,知道自己调用的函数运行完成(任务运行完成)

对于非守护线程,就算主线程执行完了,也要等非守护进程完成才能退出

守护线程

代码:

from threading import Thread
import requests
from selenium import webdriver
import time
# 并发 cpu数量小于执行任务数量 比如一个cpu运行多个进程
# 并行 cpu数量大于任务数量, 比如4个cpu运行4个进程


def sing():
    # 子线程
    for i in range(5):
        print("我是打打怪")
        time.sleep(5)
        print("子线程(守护)运行")


def dance():
    # 任务
    # for i in range(5):
    #     print("我是小小怪")
    #     time.sleep(1)
    print("11")
    time.sleep(1)
    print("子线程(非守护)运行")



"""主线程"""
if __name__ == '__main__':
    a = time.time()
    # 创建5个子线程,每个子线程都发送一次dance()任务,非守护线程不会等待主线程运行结束而结束,而守护停止是在主线程和非守护运行完成后停止

    for i in range(5):
        t1 = Thread(target=dance)
        # 线程创建按完成
        t1.start()

    for i in range(5):
        t2 = Thread(target=sing)
        t2.setDaemon(True)
        t2.start()
    b = time.time()
    print(b - a)

结果:python多线程----------主线程,子线程,任务讲解----拿下就是胜利

守护线程:要么自己运行在主线程或非守护线程前结束,要么等主线程或非守护线程结束,然后自己被强制行结束

子线程其实就是并发(同一时间段内执行多个操作)的任务;但本人理解为主线程里面有子线程,通过子线程来执行任务,任务就是我们定义的函数

setDaemon(Ture) :设置子进程为守护进程 ==  主进程关闭,子进程随即关闭【当你觉得一些线程不重要的时候,可以设置守护线程。】

 Join() :设置阻塞 == 该子进程执行完才能执行主线程【当一些任务要先于另一些任务完成的时候,可以用】

这里就不介绍了

总结:这里是给分不清楚主线程和子线程的小可爱的,文章来源地址https://www.toymoban.com/news/detail-497938.html

到了这里,关于python多线程----------主线程,子线程,任务讲解----拿下就是胜利的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 被AI抢饭碗?不!人类记者彻底胜利!

    🎉🎉欢迎来到我的CSDN主页!🎉🎉 🏅我是尘缘,一个在CSDN分享笔记的博主。📚📚 👉点击这里,就可以查看我的主页啦!👇👇 尘缘的个人主页 🎁如果感觉还不错的话请给我点赞吧!🎁🎁 💖期待你的加入,一起学习,一起进步!💖💖 大家有没有想过,有一天,AI机

    2024年02月08日
    浏览(40)
  • 【linux】定时任务讲解

    比如从现在开始,设置30分钟后自动关机,这时就可以使用at命令 第一行是定义从现在开始算,30分钟后安排一个任务; 第二行是到了时间后执行关机操作; 第三行是 EOT,这不是使用键盘输入的,而是使用了组合键Ctrl+D,表示输入结束; 第四行是系统提示有一个任务将在2

    2024年02月10日
    浏览(49)
  • 【案例讲解】LVGL 向UI任务发送顺序执行的延时任务方法

    更多源码分析请访问: LVGL 源码分析大全 由于 lv_timer_create 的执行实现方式为 后进先出 的栈执行方式,这导致在添加一些需要顺序执行的延时任务时会很麻烦,因此,需要实现一个 先进先出 接口。 以ESP32中 examples/factory_demo 为例:ESP32上的LVGL是采用多任务(相当于Linux上的

    2024年01月16日
    浏览(40)
  • 多任务之进程与线程

    ​我们生活中有很多事情是同时进行的,比如开车的时候 手和脚共同来驾驶汽车,再比如唱歌跳舞也是同时进行的;用程序来模拟: 总结 : 很显然刚刚的程序并没有完成唱歌和跳舞同时进行的要求,我们称之为单进程 如果想要实现“唱歌跳舞”同时进行,那么就需要一个新

    2024年03月26日
    浏览(43)
  • 定时任务--线程池

          定时任务线程池是一种用于执行定时任务的线程池。它可以管理多个线程,并且可以按照一定的时间间隔执行任务。      在应用程序中,有一些任务需要按照一定的时间间隔进行重复执行,例如定期检查数据、定时发送消息等。为了避免每次执行任务都创建一个新的

    2024年02月01日
    浏览(29)
  • 11.定时任务&定时线程池详解

    3.1 新增定时任务池 11.定时任务定时线程池详解 ​ 当我们不用任务框架时,我们想自己写一个定时任务时,我们能想起那个工具类呢?Timer ?还有吗?不知道了,下面我们要讲下ScheduledThreadPoolExecutor,定时任务线程池,可以执行一次任务,还可以执行周期性任务。 1.0 Schedu

    2023年04月08日
    浏览(37)
  • Qt多线程开启定时任务

    多线程执行一些耗时操作,并且需要固定时间去轮询。

    2024年02月12日
    浏览(36)
  • 高级进阶多线程——多任务处理、线程状态(生命周期)、三种创建多线程的方式

    Java中的多线程是一个同时执行多个线程的进程。线程是一个轻量级的子进程,是最小的处理单元。多进程和多线程都用于实现多任务处理。 但是,一般使用多线程而不是多进程,这是因为线程使用共享内存区域。它们不分配单独的内存区域以节省内存,并且线程之间的上下

    2024年02月13日
    浏览(39)
  • 【多线程系列-03】深入理解java中线程的生命周期,任务调度

    多线程系列整体栏目 内容 链接地址 【一】深入理解进程、线程和CPU之间的关系 https://blog.csdn.net/zhenghuishengq/article/details/131714191 【二】java创建线程的方式到底有几种?(详解) https://blog.csdn.net/zhenghuishengq/article/details/127968166 【三】深入理解java中线程的生命周期,任务调度 ht

    2024年02月17日
    浏览(49)
  • 循环交替执行多线程任务-Java

    2024年02月16日
    浏览(37)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包