并发编程之多线程一

1>线程

每个进程有一个地址空间,而且默认就有一个控制线程
进程只是用来把资源集中到一起(进程只是一个资源单位,或者说资源集合),而线程才是cpu上的执行单位。

2>线程与进程的区别

    1、同一个进程内的多个线程共享该进程内的地址资源,但进程间内存空间不共享。

    2、创建线程的开销要远小于创建进程的开销(创建进程需要申请一块内存空间,

        而在进程内创建线程则不用重新开辟内存空间)

3>多线程应用场景

    比如不同的进程 word,迅雷看看

    但是word可以1>接收用户输入、2>保存到硬盘、3>处理其他操作,这些就是word进程里面的线程。

    迅雷看看播放视频时 1>播放画面,2>播放声音,3>或者接收弹幕并发送等,这些就是迅雷看看进程里面的线程。

4>开启线程的方式

    方法一

    

    方法二

    

5>编写一个简单的文本处理工具,具备三个任务,一个接收用户输入,一个将用户输入的内容格式

    化成大写,一个将格式化后的结果存入文件。

    

    

6>多线程与多进程的区别

    6.1>线程的开销远小于进程,开启速度更快

    

    6.2>pid不一样

    

    

    6.3>同一进程内的线程共享该进程的数据,而进程间是隔离的

    

7>Thread对象的其他属性和方法

    7.1>Thread实例对象的方法
        isAlive(): 返回线程是否活动的。
        getName(): 返回线程名。

        setName(): 设置线程名。

    7.2>threading模块提供的一些方法:
        threading.currentThread(): 返回当前的线程变量。
        threading.enumerate(): 返回一个包含正在运行的线程的list。

        threading.activeCount(): 返回正在运行的线程的数量,与len(threading.enumerate())有相同的结果。

    

8>守护线程

    1、对主进程来说,运行完毕指的是主进程代码运行完毕

    2、对主线程来说,运行完毕指的是主线程所在的进程内所有非守护线程统统运行完毕,主线程才算运行完毕

    如下,守护线程和非守护线程不同运行时长的执行结果;

    

    




猜你喜欢

转载自blog.csdn.net/huangql517/article/details/80091997