线程

多线程--threading

python的thread模块是比较底层的模块,python的threading模块是对thread做了些封装的,可以更加方便的使用

1.使用thearding模块

说明:

--1.可以明显的看出使用了多线程并发的操作,花费时间要短很多

--2.创建好的线程,需要调用start()方法来启动

2.主线程会等待所有子线程结束后才结束

为什么会等子线程结束,主线程才结束呢?回收内存。

3.查看线程

上述代码添加了以下代码:


4.threading注意点

threading.Thread封装子类

通过使用threading模块能完成多任务的程序开发,为了让每个线程的封装性更完美,所以使用threading模块时,往往会定义一个新的子类class,只要继承threading.Thread就可以了,然后重新run方法


5.线程的执行顺序


说明:

只能保证每个线程都运行完整个run函数,但是线程的启动顺序,run函数中每次循环的执行顺序都不能确定

注意:

每个线程一定会有一个名字,尽管上面的例子中没有指定线程对象的name,但是python会自动为线程指定一个名字

当线程的run()方法结束时该线程完成

无法控制线程调度程序,但是可以通过被的方式来影响线程调度的方式

线程的集中状态:启动,调度,结束,等待

6.多线程--共享全局变量

两个线程修改全局变量

7.列表当做实参传递到线程中


在一个进程内的所有线程共享全局变量,能够在不适用其他方式的前提下完成

8.进程线程

进程:能够完成任务,比如一台电脑上能够同时运行多个QQ

线程:能够完成多任务,比如一个QQ中的多个聊天窗口

9.同步

同步就是协同步调,按预定的先后次序进行运行。

10.互斥锁

当多个线程几乎同时修改某一个共享数据的时候,需要进行同步控制

锁的好处:

确保了某段关键代码只能由一个线程从头到尾完整的执行

锁的坏处:

阻止了多线程并发执行,包含锁的某段代码实际上只能以单线程模式执行,效率就大大的下降了,

由于可以存在对哦个锁,不同的线程持有不同的锁,并试图获取对方持有的锁时,可能会造成死锁。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 线程 引言&动机 考虑一下这个场景,我们有10000条数据需要处理,处理每条数据需要花费1秒,但读取数据只需要0....
    不浪漫的浪漫_ea03阅读 2,900评论 0 0
  • 引言&动机 考虑一下这个场景,我们有10000条数据需要处理,处理每条数据需要花费1秒,但读取数据只需要0.1秒,...
    chen_000阅读 3,526评论 0 0
  • 多任务可以由多进程完成,也可以由一个进程内的多线程完成。我们前面提到了进程是由若干线程组成的,一个进程至少有一个线...
    壁花烧年阅读 4,235评论 0 0
  • 1.线程 Python中使用线程有两种方式:函数或者用类来包装线程对象。 1.函数式:调用thread模块中的st...
    一只写程序的猿阅读 4,629评论 0 1
  • 1.锯下黑檀木小条,以及更小的方块 2.打磨小条和方块至1000目 3.刻刀开槽,根据银丝直径确定开槽的宽度和深度...
    桑浩阅读 5,386评论 0 1

友情链接更多精彩内容