python创建线程池,python创建线程时间

  python创建线程池,python创建线程时间

  Python提供了两个模块_thread和threading来支持多线程,其中_thread提供了底层和原始线程支持,以及简单的锁。顾名思义,一般编程不推荐使用线程模块;线程模块提供丰富的多线程支持。

  Python主要以两种方式创建线程:

  使用线程模块的Thread类的构造函数创建线程。

  继承线程模块的线程类来创建线程类。

  调用Thread类的构造函数创建一个线程。

  调用Thread类的构造函数来创建线程是非常简单的。直接调用下面线程的构造函数。创建线程的线程类:

  _ _ init _ _ (self,group=none,target=none,name=none,args=(),kwargs=none,*,daemon=none)上述构造函数涉及以下参数:

  Group:指定该线程所属的线程组。目前这个参数还没有实现,所以只能设置为None。

  Target:指定该线程要调度的目标方法。

  Args:指定一个元组,并将参数作为target指定的函数的位置参数传入。元组的第一个元素传递给目标函数的第一个参数,元组的第二个元素传递给目标函数的第二个参数……依此类推。

  Kwargs:指定一个字典,以关键字参数的形式为target指定的函数传入参数。

  Daemon:指定正在构建的线程是否是后代线程。

  通过Thread类的构造函数创建一个启动多线程的井的步骤如下:

  调用thread类的构造函数创建一个Thread对象。创建线程对象时,由目标参数指定的函数将充当线程执行器。

  调用thread对象的start()方法启动线程。

  下面的程序演示了如何通过Thread类的构造函数创建Thread对象:

  导入线程

  #定义一个普通的动作函数,它可以用作线程执行器

  污损(最大):

  最大范围:

  #调用线程模块的current_thread()函数获取当前线程

  # thread对象的getName()方法获取当前线程的名称

  print(threading.current_thread()。getName() str(i))

  #这里是主程序(即主线程的执行程序)

  电话:(100):

  #调用线程模块的current_thread()函数获取当前线程

  print(threading.current_thread()。getName() str(i))

  ifi==20:

  #创建并启动第一个线程

  t1=线程。线程(target=action,args=(100,))

  t1.start()

  #创建并启动第二个线程

  t2=线程。线程(target=action,args=(100,))

  t2.start()

  Print(主线程执行完成!)上述程序中的主程序包含一个循环,当循环变量I等于20时,该循环创建并启动两个新线程:

  创建了一个线程对象,这个线程的目标是action,也就是说它会以action函数作为线程执行器。接下来,程序调用start()方法来启动t1线程。

  再次创建一个线程,它的创建和启动方式与第一个线程完全相同。

  运行上面的程序,就会看到如图所示的界面。

  虽然上面的程序只显式创建并启动了两个线程,但实际上程序有三个线程,即程序显式创建的两个子线程和主线程。前面说过,Python程序开始运行时,程序会创建至少一个主线程,主线程的线程执行人就是程序中的主程序(任何函数都没有代码)。

  从上图可以看出,此时程序中有三个线程。这三个线程的执行没有顺序。它们是以并发的方式执行的:Thread-1执行一段时间,然后可能Thread-2或者MainThread让CPU执行一段时间,然后由其他线程执行。这是典型的线程并发执行,CPU以快速旋转的方式在多个线程之间切换,从而给用户一种多个线程好像同时在执行的错觉。

  通过上面的介绍,不难看出多线程的意义。如果不使用多线程,主程序直接调用action()函数两次,那么程序只会在第一次调用完成后执行第二次调用的action()函数。在继续执行主程序之前,必须等待action()函数的第二次调用完成。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: