Python多进程的创建与使用(threading模块)

与进程一样,线程也有模块,python已经为我们提供了,我们不需要知道底层代码是如何实现这个功能的,我们只要掌握这个模块的使用方法就够了。
threading模块的使用
这里给大家写一个简单的单进程或者单线程的代码与多线程作为比较
这里写图片描述
这里写图片描述
下面我们就导入threading模块来创建多线程
这里写图片描述
这里写图片描述

由上图可以明显的看出来多线程的并发操作,创建好的线程,需要调用start()方法来启动。

其实多线程和多进程的用法都比较相似,语法,参数什么基本都一样,就是不同的模块而已,大家如果语法,参数不明白的可以去看我之前的文章,讲的多进程里面有语法的使用,和参数的介绍。

多线程中,主线程会等待所有的子线程结束后才会结束

下面我们来说一下,线程执行代码的封装
通过上面简单的代码我们能够看出,使用threading模块能够完成多任务的程序开发,为了让每个线程的封装性更完美,所以我们需要创建一个新的子类,然后继承threading模块中的类方法就可以,然后重写run方法。下面给大家个例子,写的代码都比较简单,重在理解如何使用。
这里写图片描述
这里写图片描述
一看真的和多进程使用方法大差不差threading.Thread类中也有一个run()方法,用来定义线程的功能函数,可以在自己的线程类中覆盖该方法,然后使用start()方法调用,run()方法就会自动启用,然后就会创建多线程,从而执行。

和进程一样,线程的执行顺序也是随机的,这些都是由操作系统的调度决定的。下面给大家一张状态图:
这里写图片描述

这是重点,需要关注一下
多线程-全局变量共享!!!这和进程是不一样的,进程是各自有一份,互相不影响,而线程是共享的。
还是老样子,给大家一张简单的代码图,方便理解。
这里写图片描述
这里写图片描述

由上图可以看出来,全局变量在线程中被修改了。所以在一个进程内的所有线程共享全局变量,能够在不适用其他方式的前提下完成多线程间的数据共享(这点要比进程号),但是缺点就是,线程对全局变量随意修改可能会造成多线程之间的全局变量的混乱(即线程非安全)

这个时候就要引入一个概念,同步的概念,还有互斥锁,这个留到明天再总结吧,我得去把我的飞机大战总结一下,然后上传给大家分享,如果有需要飞机大战素材包的可以留言。素材包包括(图片,字体,音效)代码我会放在下篇文章中。

猜你喜欢

转载自blog.csdn.net/SenZendao/article/details/81674317