python中如何实现多线程_Python中的多线程是什么?如何实现?

本文详细介绍了Python中的多线程概念,包括什么是线程、何时使用多线程、如何创建线程以及多线程的优点。通过实例展示了如何不创建类以及通过扩展Thread类来实现多线程,并对比了使用多线程前后的执行时间,强调了多线程在资源利用、代码简化和提高性能上的优势。
摘要由CSDN通过智能技术生成

以下是本文所涵盖的所有专业的简要总结:

什么是python中的多线程?

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

如何在Python中实现多线程?

如何在Python中创建线程?而不创建类

通过扩展线程类

不扩展线程类

在Python中使用多线程的优点

首先,让我们先尝试理解多任务处理,然后才开始学习Python中的多线程。

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

一般来说,多任务处理是一种同时执行多项任务的能力。在技术上,多任务处理是指操作系统同时执行不同任务的能力。例如,你在你的电脑上下载一些东西,听歌,同时玩游戏等等。所有这些任务都由同一个操作系统同步执行。这只不过是多任务处理,它不仅可以帮助您节省时间,而且还可以提高工作效率。

这是小编准备的python学习资料,关注,转发,私信小编“01”即可获取!

在操作系统中有两种类型的多任务处理:以过程为基础

线程基

在本文中,您将了解到线程基多任务或多线程.

什么是线?

线程基本上是一个独立执行流程。单个进程可以由多个线程组成。程序中的每个线程都执行特定的任务。例如,当你在电脑上玩游戏时,比如说国际足联,整个游戏是一个单一的过程。,但它由几个线程组成,负责播放音乐、接收用户的输入、同步运行对手等。所有这些都是单独的线程,负责在同一个程序中执行这些不同的任务。

每个进程都有一个始终在运行的线程。这是主线。这个主线程实际上创建子线程对象。子线程也由主线程启动。在本文中,我将进一步介绍如何检查当前运行的线程。

因此,我希望你们已经清楚地理解了什么是一条线。接下来,让我们看看Python中的多线程是什么。

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

多线程是非常有用的节省时间和提高性能,但它不能适用于任何地方。

在前面的FIFA示例中,音乐线程独立于接受输入的线程,而接受输入的线程独立于运行对手的线程。这些线程独立运行,因为它们不相互依赖。

因此,只有当单个线程之间的依赖关系不存在时,才能使用多线程。

本文进一步展示了如何在Python中实现多线程。

如何在Python中实现多线程?

可以通过导入穿线模块。

在导入此模块之前,您必须安装此模块。要在anaconda环境中安装它,请在anaconda提示符上执行以下命令:

conda安装-c conda-锻造tbb

成功安装它之后,可以使用以下任何命令导入线程模块:

import threading

from threading import *

现在已经安装了线程模块,让我们继续使用Python进行多线程处理。

如何在Python中创建线程?

Python中的线程可以通过三种方式创建:而不创建类

通过扩展Thread类

不扩展线程类

而不创建类

Python中的多线程也可以在不创建类的情况下完成。下面是一个演示相同内容的示例:

例子:from threading import *

print(current_thread().getName())

def mt():

print('Child Thread')

child=Thread(target=mt)

child.start()

print('Executing thread name :',current_thread().getName())

产出:

MainThread

Child Thread

Executing thread name : MainThread

上面的输出显示,存在的第一个线程是主线程。然后,这个主线程创建一个执行函数的子线程,然后主线程再次执行最后的print语句。

现在让我们继续前进,看看如何通过扩展Thread类在python中执行多线程。

通过扩展Thread类:

当通过扩展Thread类创建子类时,子类表示一个新线程正在执行某些任务。在扩展Thread类时,子类只能覆盖两个方法,即_init_()方法和run()方法。除了这两个方法之外,其他任何方法都不能被重写。

下面是如何扩展Thread类以创建线程的示例:

例子:import threading

import time

class mythread(threading.Thread):

def run(self):

for x in range(7):

print('Hi from child')

a = mythread()

a.start()

a.join()

print('Bye from',current_thread().getName())

产出:

孩子问好

孩子问好

孩子问好

孩子问好

孩子问好

孩子问好

孩子问好

主线再见

上面的示例显示类myclass继承Thread类,子类,即myclass重写Run方法。默认情况下,任何类函数的第一个参数都必须是Self,它是指向当前对象的指针。输出显示子线程执行run()方法,主线程等待Child执行完成。这是因为JOIN()函数,它使主线程等待子线程完成。

这种创建线程的方法是最好的方法,因为它是标准的方法。但是,如果希望在不继承或扩展Thread类的情况下创建线程,则可以采用以下方式。

不扩展线程类

要在不扩展Thread类的情况下创建线程,可以执行以下操作:

例子:

from threading import *

class ex:

def myfunc(self): #self necessary as first parameter in a class func

for x in range(7):

print('Child')

myobj=ex()

thread1=Thread(target=myobj.myfunc)

thread1.start()

thread1.join()

print('done')

产出:

儿童

儿童

儿童

儿童

儿童

儿童

儿童

已完成

子线程执行myfunc,然后主线程执行最后一个print语句。

使用线程的优点

多线程有许多优点,其中一些优点如下:更好地利用资源

简化代码

允许并发和并行地发生各种任务。

减少时间消耗或响应时间,从而提高性能。

下面是一个示例,用于检查在python中使用和不使用多线程执行代码所需的时间:Example:

import time

def sqr(n):

for x in n:

time.sleep(1)

x%2

def cube(n):

for x in n:

time.sleep(1)

x%3

n=[1,2,3,4,5,6,7,8]

s=time.time()

sqr(n)

cube(n)

e=time.time()

print(e-s)

产出:

16.042309284210205

以上是在不使用线程的情况下执行程序所需的输出时间。现在让我们使用线程,看看同一个程序发生了什么:

例子:import threading

from threading import *

import time

def sqr(n):

for x in n:

time.sleep(1)

print('Remainder after dividing by 2',x%2)

def cube(n):

for x in n:

time.sleep(1)

print('Remainder after dividing by 3',x%3)

n=[1,2,3,4,5,6,7,8]

start=time.time()

t1=Thread(target=sqr,args=(n,))

t2=Thread(target=cube,args=(n,))

t1.start()

time.sleep(1)

t2.start()

t1.join()

t2.join()

end=time.time()

print(end-start)

产出: 9.040220737457275

上面的输出清楚地表明,与不使用线程的相同程序执行所需的时间相比,我们使用线程所花费的时间要少得多。

我希望您能够清楚地了解本文中涉及到的与Python中的多线程有关的概念。确保尽可能多地实践,因为这是编程中使用的最重要的概念之一。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值