Python多线程实现程序加速

多线程即同时执行多个应用程序,这样能够减小时间消耗,提升程序性能,因此下面就和你们分享Python中多线程的实现。主要包括如下几个方面:python

什么是Python中的多任务处理?程序员

什么是线程?web

什么时候在Python中使用多线程?django

如何在Python中实现多线程?编程

多线程的优势多线程

什么是Python中的多任务处理?并发

一般,多任务处理是同时执行多个任务的能力。在技术方面,多任务处理是指操做系统同时执行不一样任务的能力。例如,您正在PC上下载内容以及收听歌曲和同时玩游戏等。全部这些任务都由同一个OS同步执行。这不过是多任务处理,它不只能够帮助您节省时间,还能够提升工做效率。操做系统中有两种类型的多任务处理:svg

基于进程函数

基于线程性能

什么是线程?
在这里插入图片描述
线程基本上是一个独立的执行流程。单个进程能够包含多个线程。程序中的每一个线程都执行特定任务。例如,当你在PC上玩游戏时说FIFA,整个游戏只是一个进程,但它由几个负责播放音乐,接受用户输入,同步运行游戏等的线程组成。全部这些都是独立的线程,负责在同一程序中执行这些不一样的任务。每一个进程都有一个始终在运行的线程。这是主线程。这个主线程实际上建立了子线程对象。子线程也由主线程启动。

什么时候在Python中使用多线程?

多线程对于节省时间和提升性能很是有用,但它也有一些应用限制。在以前的FIFA示例中,音乐线程独立于获取输入的线程,而获取输入的线程独立于运行游戏的线程。这些线程独立运行,由于它们不是相互依赖的。所以只有各个线程之间不存在依赖关系时才能使用多线程。

如何在Python中实现多线程?

Python中的多线程能够经过导入threading模块来实现。在导入此模块以前,可使用pip3安装。要在anaconda环境中可使用conda命令安装。

成功安装后,您可使用如下一个命令导入threading模块:

如何在Python中建立线程?

Python中的线程能够经过三种方式建立:

没有建立一个类

经过扩展Thread类

没有扩展Thread类

没有建立一个类

Python中的多线程也能够在不建立类的状况下完成。如下是一个示例:

程序表示第一个线程是主线程。而后,该主线程建立一个正在执行该函数的子线程,而后由主线程再次执行最终的print语句。输出结果为:

扩展Thread类:

经过扩展Thread类建立子类时,子类表示新线程正在执行某个任务。扩展Thread类时,子类只能覆盖两个方法,即__init __()方法和run()方法。除了这两种方法以外,没有其余方法能够被覆盖。如下是如何扩展Thread类以建立线程的示例:

输出结果为:

上面的例子代表myclass类继承了Thread类和子类,即myclass重写了run方法。默认状况下,任何类函数的第一个参数都须要是self,它是指向当前对象的指针。输出显示子线程执行run()方法,主线程等待子进程执行完成。这是由于join()函数使主线程等待子进程完成。这种建立线程的方法是最标准的方法,可是若是您想在不继承或扩展Thread类的状况下建立线程,能够参见下一个示例。

没有扩展Thread类

要在不扩展Thread类的状况下建立线程,能够[添加连接描述经过如下示例代码:

程序经过子线程执行myfunc,以后主线程执行最后一个print语句。输出结果为:

使用线程的优势

总结多线程的优势以下:

更好地利用资源

简化代码

容许并发和并行发生各类任务

减小时间消耗或响应时间,从而提升性能。

下面经过一个示例来比较在python中使用和不使用多线程执行代码所需的时间:

首先咱们计算不使用线程所须要的时间,程序以下:

须要时间为:9.040220737457275。经过以上一个简单的示例比较能够看出与不使用线程执行相同程序所花费的时间相比,咱们使用线程所花费的时间要少得多。所以在执行多个相互间不冲突的任务时,能够经过多线程进行程序加速。
推荐咱们的python学习基地,看老程序是如何学习的!从基础的python脚本、爬虫、django、数据挖掘等编程技术,工做经验,还有前辈精心为学习python的小伙伴整理零基础到项目实战的资料,!天天都有程序员定时讲解Python技术,分享一些学习的方法和须要留意的小细节,