国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

Python實現多線程的兩種方式分析

2020-01-04 14:37:44
字體:
來源:轉載
供稿:網友

本文實例講述了Python實現多線程的兩種方式。分享給大家供大家參考,具體如下:

目前python 提供了幾種多線程實現方式 thread,threading,multithreading ,其中thread模塊比較底層,而threading模塊是對thread做了一些包裝,可以更加方便的被使用。

2.7版本之前python對線程的支持還不夠完善,不能利用多核CPU,但是2.7版本的python中已經考慮改進這點,出現了multithreading  模塊。threading模塊里面主要是對一些線程的操作對象化,創建Thread的class。一般來說,使用線程有兩種模式:

  • A 創建線程要執行的函數,把這個函數傳遞進Thread對象里,讓它來執行;
  • B 繼承Thread類,創建一個新的class,將要執行的代碼 寫到run函數里面。

本文介紹兩種實現方法。

第一種 創建函數并且傳入Thread 對象中

t.py 腳本內容

import threading,timefrom time import sleep, ctimedef now() : return str( time.strftime( '%Y-%m-%d %H:%M:%S' , time.localtime() ) )def test(nloop, nsec): print 'start loop', nloop, 'at:', now() sleep(nsec) print 'loop', nloop, 'done at:', now()def main(): print 'starting at:',now() threadpool=[] for i in xrange(10):  th = threading.Thread(target= test,args= (i,2))  threadpool.append(th) for th in threadpool:  th.start() for th in threadpool :  threading.Thread.join( th ) print 'all Done at:', now()if __name__ == '__main__':  main()

執行結果:

starting at: 2018-08-29 09:34:16
start loop 0 at: 2018-08-29 09:34:16
start loop 1 at: 2018-08-29 09:34:16
start loop 2 at: 2018-08-29 09:34:16start loop 3 at: 2018-08-29 09:34:16

start loop 4 start loopat:  52018-08-29 09:34:16 
at: 2018-08-29 09:34:16
start loop 6 at: start loop2018-08-29 09:34:16 
7 at: 2018-08-29 09:34:16
start loop 8 start loopat: 9  2018-08-29 09:34:16at:
 2018-08-29 09:34:16
looploop 1 done at: 2018-08-29 09:34:18
 0 done at: 2018-08-29 09:34:18
loop 3 done at: 2018-08-29 09:34:18
looploop 5 done at: 2018-08-29 09:34:18
 2 done at: 2018-08-29 09:34:18
loop 4 done at: 2018-08-29 09:34:18
looploop 7 done at: 2018-08-29 09:34:18
 6 done at: 2018-08-29 09:34:18
looploop  98  done at:done at:  2018-08-29 09:34:182018-08-29 09:34:18

all Done at: 2018-08-29 09:34:18

第二種 創建繼承自Thread的類

thclass.py 腳本內容:

import threading , timefrom time import sleep, ctimedef now() : return str(time.strftime('%Y-%m-%d %H:%M:%S' , time.localtime()))class myThread (threading.Thread) : """docstring for myThread""" def __init__(self, nloop, nsec) :  super(myThread, self).__init__()  self.nloop = nloop  self.nsec = nsec def run(self):  print 'start loop', self.nloop, 'at:', ctime()  sleep(self.nsec)  print 'loop', self.nloop, 'done at:', ctime()def main(): thpool = [] print 'starting at:', now() for i in xrange(10):  thpool.append(myThread(i, 2)) for th in thpool:  th.start() for th in thpool:  th.join() print 'all Done at:', now()if __name__ == '__main__':  main()

執行結果:

starting at: 2018-08-29 09:36:02
start loop 0 at: Wed Aug 29 09:36:02 2018
start loop 1 at: Wed Aug 29 09:36:02 2018
start loop 2 at: Wed Aug 29 09:36:02 2018
start loop 3 at: Wed Aug 29 09:36:02 2018
start loop 4 at: Wed Aug 29 09:36:02 2018
 start loop 5 at: Wed Aug 29 09:36:02 2018
start loop 6 at: Wed Aug 29 09:36:02 2018
start loop 7 at: Wed Aug 29 09:36:02 2018
start loop 8 at: Wed Aug 29 09:36:02 2018
start loop 9 at: Wed Aug 29 09:36:02 2018
loop 0 done at: Wed Aug 29 09:36:04 2018
loop 1 done at: Wed Aug 29 09:36:04 2018
looploop  23  done at:done at:  Wed Aug 29 09:36:04 2018Wed Aug 29 09:36:04 2018

loop 4 done at: Wed Aug 29 09:36:04 2018
loop 5 done at: Wed Aug 29 09:36:04 2018
loop 6 done at: Wed Aug 29 09:36:04 2018
looploop loop 8 9 7 done at: done at: done at: Wed Aug 29 09:36:04 2018 Wed Aug 29 09:36:04 2018
Wed Aug 29 09:36:04 2018

all Done at: 2018-08-29 09:36:04

希望本文所述對大家Python程序設計有所幫助。


注:相關教程知識閱讀請移步到python教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 山东省| 元氏县| 白城市| 临夏市| 三都| 墨脱县| 罗平县| 镇平县| 司法| 阳朔县| 博爱县| 乌拉特后旗| 杭锦后旗| 西宁市| 太和县| 双牌县| 东方市| 安康市| 梨树县| 太谷县| 嘉善县| 济南市| 富裕县| 花莲县| 红安县| 保定市| 勃利县| 大冶市| 德兴市| 依安县| 齐河县| 元阳县| 浏阳市| 淮南市| 若羌县| 额济纳旗| 贵德县| 长岭县| 汉中市| 高邮市| 福贡县|