这篇文章将为大家详细讲解有关如何使用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实现多线程