python基础(19)-线程深入

按照上述的说明,我们只是会了简单的python关于线程的两种用法;但是具体线程的一些深层次的,比如线程同步,线程安全,线程通信,线程回收这些我们都还没有接触;对于线程池的使用,我们更是没有很好的接触;所以,我觉得我觉得我们应该继续学习对python线程的使用;
1、首先;我们先看下如何进行线程的回收;
thread.join(timeout)
这个表示要进行线程回收;其中timeout单位是s;也就是说,如果超时的话,则不再等待;要对线程进行回收;

import threading
#定义线程要调用的方法,*add可接收多个以非关键字方式传入的参数
def action(*add):
    for arc in add:
        #调用 getName() 方法获取当前执行该程序的线程名
        print(threading.current_thread().getName() +" "+ arc)
#定义为线程方法传入的参数
my_tuple = ("http://c.biancheng.net/python/",\
            "http://c.biancheng.net/shell/",\
            "http://c.biancheng.net/java/")
#创建线程
thread = threading.Thread(target = action,args =my_tuple)
#启动线程
thread.start()
#指定 thread 线程优先执行完毕
thread.join()
#主线程执行如下语句
for i in range(5):
    print(threading.current_thread().getName())

这里有一个比较有意思的事情;如果我们不传参数的话,那么就会一直等待这个线程执行完毕;你看我们执行了start,然后就会一直执行完毕;这样的话就变成了类似于同步的感觉;
2、守护线程
此类线程的特点是,当程序中主线程及所有非守护线程执行结束时,未执行完毕的守护线程也会随之消亡(进行死亡状态),程序将结束运行。
前面章节中,我们学习了 2 种创建线程的方式,守护线程本质也是线程,因此其创建方式和普通线程一样,唯一不同之处在于,将普通线程设为守护线程,需通过线程对象调用其 damon 属性,将该属性的值该为 True。
并且需要注意的一点是,线程对象调用 daemon 属性必须在调用 start() 方法之前,否则 Python 解释器将报 RuntimeError 错误。

import threading
#定义线程要调用的方法,*add可接收多个以非关键字方式传入的参数
def action(length):
    for arc in range(length):
        #调用 getName() 方法获取当前执行该程序的线程名
        print(threading.current_thread().getName()+" "+str(arc))
#创建线程
thread = threading.Thread(target = action,args =(20,))
#将thread设置为守护线程
thread.daemon = True
#启动线程
thread.start()
#主线程执行如下语句
for i in range(5):
    print(threading.current_thread().getName())

=======================================================================================
这里稍微的加两个知识点;一个就是sleep函数;time.sleep(secs)表示的是要延时多少s;
2、如果要输出一个%,那么应该是"%%",这样才会输出一个%;这些记住了即可;
=======================================================================================

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

推荐阅读更多精彩内容

  • 线程 操作系统线程理论 线程概念的引入背景 进程 之前我们已经了解了操作系统中进程的概念,程序并不能单独运行,只有...
    go以恒阅读 5,598评论 0 6
  • 必备的理论基础 1.操作系统作用: 隐藏丑陋复杂的硬件接口,提供良好的抽象接口。 管理调度进程,并将多个进程对硬件...
    drfung阅读 8,930评论 0 5
  • 一、线程概念的引入 进程有很多优点,它提供了多道编程,让我们感觉我们每个人都拥有自己的CPU和其他资源,可以提高计...
    SlashBoyMr_wang阅读 2,350评论 0 5
  • 📦 本文以及示例源码已归档在 javacore 一、线程简介什么是进程什么是线程进程和线程的区别 二、线程基本用法...
    静默虚空阅读 1,839评论 0 1
  • 线程概念的引入背景 有了进程为什么还要线程 进程有很多的有点,它提供了多到编程,让我们感觉我们每个人都拥有自己的C...
    可笑的黑耀斑阅读 3,180评论 0 0