如何使用Python实现多线程

  介绍

这篇文章将为大家详细讲解有关如何使用Python实现多线程,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

本文实例讲述了Python实现多线程的两种方式。分享给大家供大家参考,具体如下:

目前Python提供了几种多线程实现方式线程,线程,多线程,其中螺纹模块比较底层,而线程模块是对线程做了一些包装,可以更加方便的被使用。

2.7版本之前Python对线程的支持还不够完善,不能利用多核CPU,但是2.7版本的Python中已经考虑改进这点,出现了multithreading 模块.threading模块里面主要是对一些线程的操作对象化,创建线程的类。一般来说,使用线程有两种模式:

<李>

创建线程要执行的函数,把这个函数传递进线程对象里,让它来执行;

<李>

B继承线程类,创建一个新的类,将要执行的代码写到运行函数里面。

本文介绍两种实现方法。

<强>第一种创建函数并且传入线程对象中

t。py脚本内容

import 线程、时间   得到time  import 睡眠,ctime   def 现在(),:   ,return  str (, time.strftime (Y, & # 39; % - % - % d  % H: % m: % & # 39;,,, time.localtime (),),)   def 测试(nloop, nsec):   ,print  & # 39; start 循环# 39;,,nloop,, & # 39;: & # 39;现在,()   ,睡眠(nsec)   ,print  & # 39;循环# 39;,,nloop,, & # 39; done : & # 39;现在,()   def  main ():   ,print  & # 39; starting 在:& # 39;,现在()   ,threadpool=[]   ,for 小姐:拷贝xrange (10):   时间=th 才能;threading.Thread(目标=,测试参数=,(我,2))   threadpool.append才能(th)   ,for  th  threadpool拷贝:   th.start才能()   ,for  th  threadpool 拷贝:   threading.Thread.join才能(,th )   ,print  & # 39; all  Done : & # 39;现在,()   if  __name__ ==, & # 39; __main__ # 39;:   以前,,main ()

执行结果:

开始:2018-08-29 09:34:16
循环0开始:2018-08-29 09:34:16
开始循环1:2018-08-29 09:34:16
开始循环2:2018-08-29 09:34:16start循环3:2018-08-29 09:34:16

开始循环4开始loopat:,52018-08-29 09:34:16
: 2018-08-29 09:34:16
开始循环6:开始loop2018-08-29 09:34:16
7: 2018-08-29 09:34:16
开始循环8开始loopat: 9,2018-08-29 09:34:16at:
, 2018-08-29 09:34:16
looploop 1在:2018-08-29 09:34:18
, 0在:2018-08-29 09:34:18
循环3在:2018-08-29 09:34:18
looploop 5完成:2018-08-29 09:34:18
, 2在:2018-08-29 09:34:18
循环4在:2018-08-29 09:34:18
looploop 7在:2018-08-29 09:34:18
, 6在:2018-08-29 09:34:18
looploop 98年,完成:完成:2018-08-29 09:34:182018-08-29 09:34:18

全部完成:2018-08-29 09:34:18

<强>第二种创建继承自线程的类

thclass。py脚本内容:

import  threading ,,时间   得到time  import 睡眠,ctime   def 现在(),:   ,return  str (time.strftime (& # 39; Y % - % - % d  % H: % m: % & # 39;,,, time.localtime ()))   class  myThread  (threading.Thread),:   ,“““docstring  for  myThread"““   ,def  __init__ (nloop,自我,还以为;nsec),:   超级才能(myThread,,自我). __init__ ()   self.nloop 才能=nloop   self.nsec 才能=nsec   ,def 运行(自我):   print 才能;& # 39;start 循环# 39;,,self.nloop,, & # 39;: & # 39;, ctime ()   睡眠(self.nsec)才能   print 才能;& # 39;循环# 39;,,self.nloop,, & # 39; done : & # 39;, ctime ()   def  main ():=,thpool  []   ,print  & # 39; starting : & # 39;现在,()   ,for 小姐:拷贝xrange (10):   thpool.append才能(myThread(我,2))   ,for  th  thpool拷贝:   th.start才能()   ,for  th  thpool拷贝:   th.join才能()   ,print  & # 39; all  Done : & # 39;现在,()   if  __name__ ==, & # 39; __main__ # 39;:   以前,,main ()

执行结果:

开始:2018-08-29 09:36:02
循环0开始:结婚2018年8月29日09:36:02
开始循环1:结婚2018年8月29日09:36:02
开始循环2:结婚2018年8月29日09:36:02
开始循环3:结婚2018年8月29日09:36:02
开始循环4:结婚2018年8月29日09:36:02
,开始循环5:结婚2018年8月29日09:36:02
开始循环6:结婚2018年8月29日09:36:02
开始循环7:结婚2018年8月29日09:36:02
开始循环8:结婚2018年8月29日09:36:02

如何使用Python实现多线程