python构造器是什么_Python并发编程很简单,一文搞清如何使用构造器创建线程

  • Post author:
  • Post category:python


上次已经和大家探讨了关于进程和线程的区别和联系相关的东东,今天呢,咱们再次回到Python哦,和大家一起聊聊如何进行Python并发编程哦,大家也可以理解为如何在Python中进行多线程编程哦!

好啦,废话少说,咱们就开始吧!

首先说一下哦,Python内部是提供了两个模块来支持多线程编程的,它们分别是_thread和threading哦,到这可能有朋友会问了,这两个有什么区别呢?好问题哦,其实呢,_thread是提供低级别而且是比较原始的线程支持的哦,而且呢它还有一个简单的锁,通过以前咱们的讲解大家对于_thread前面的下划线的意思已经明白啦,它是代表隐藏的含义哦,这也表明了其实Python是不建议咱们使用这个_thread的;因此呢,如果你在Python中想进行多线程编程,那就好好使用threading模块吧,因为在threading中提供了功能超级丰富的对多线程编程的支持哦!

其实,对于Python创建线程的方式主要有两种哦,今天呢,咱们就先介绍一下第一种吧,第二种方式咱们下次介绍哦,那第一种方式是什么呢?它就是使用threading模块的Thread类的构造方法(也可以叫构造器哦)创建线程哦!

那如何使用threading模块的Thread类的构造器创建线程呢?不要着急哦,要想知道怎么创建,首先咱们需要了解一下threading模块中Thread类的构造器的语法结构哦:

__init__(self, group=None, target=None, name=None, args=(), kwargs=None, *, daemon=None)

首先说一下哦,上面Thread类的这个构造器中的很多参数是自身赋值None,说明它是默认参数哦,对于这类参数可以不做任何赋值就会有None这个默认值哦,好啦,咱们就说一下__init__()中各个参数的含义吧:

第一个参数self,这个大家都熟悉啦,在Python的类中每个方法的首个参数必须是self哦;

第二个参数group,表示该线程所属的线程组哦,据说这个参数是保留使用的,还没有具体的实际实现意义哦;

第三个参数target,表示该线程要调度的目标方法哦;

第四个参数name表示线程名哦;

第五个参数args,通过它的赋值可以看出它是一个元组哦,表示以位置参数的形式为target指定的函数传入参数哦;

第六个参数kwargs,代表一个字典哦,表示你可以以关键字参数的形式为target指定的函数传入参数哦;

第七个参数daemon,代表指定所构建的线程是否是后台线程哦。

到这大家是否对于Thread类的构造器__init__()有点晦涩难懂呢,没关系哦,下面咱们举个“栗子”就清楚啦,举“栗子”之前咱们先说一下使用Tread类的狗仔妻创建多线程的步骤哦:

第一步呢,就是调用Tread类的构造器创建线程对象哦,在创建线程对象时,target参数指定的函数将会作为线程的执行体哦;

第二步呢,就是调用线程对象的start()函数启动这个线程哦。

好啦,下面咱们正式举“栗”哦:

上面就是咱们所编写的程序哦,可以看到哦,在主函数中咱们定义了一个循环哦,在这个循环中咱们设定当循环变量i等于10时就会创建并启动两个咱们定义的新的线程哦,其中第16行和第19行就是咱们所创建的两个线程哦,对于两个线程的运行都是调用start()函数哦!

下面咱们就运行一下上面咱们所编写的这个程序来看看效果吧:

上面就是多线程的运行结果哦,咱们用不同的颜色进行了标记哦,看一看到主线程和咱们所创建并运行的两个线程都进行了无规律的交叉运行哦,这就表明咱们使用Python进行多线程编程成功了哦,这就是经典的并发编程哦,其实呢,是因为咱们电脑的CPU以极快的速度在这几个线程之间进行切换执行的,由于电脑主频很高哦,所以呢,咱们就感觉是电脑进行了并发编程的哦!

好啦,上面就是咱们所聊的关于使用threading模块的Thread类的构造器__init__()创建线程的东东哦,关于Python创建线程的第二种方法(使用继承threading模块的Thread类创建线程类)咱们下次进行介绍哦,今天咱们就聊到这吧,下次再见哦!

敬请关注“品位集结号”,为您带来意外的小收获!