python實(shí)現(xiàn)多線程的兩種方式
目前python 提供了幾種多線程實(shí)現(xiàn)方式 thread,threading,multithreading ,其中thread模塊比較底層,而threading模塊是對thread做了一些包裝,可以更加方便的被使用。
2.7版本之前python對線程的支持還不夠完善,不能利用多核CPU,但是2.7版本的python中已經(jīng)考慮改進(jìn)這點(diǎn),出現(xiàn)了multithreading 模塊。threading模塊里面主要是對一些線程的操作對象化,創(chuàng)建Thread的class。一般來說,使用線程有兩種模式:
A 創(chuàng)建線程要執(zhí)行的函數(shù),把這個函數(shù)傳遞進(jìn)Thread對象里,讓它來執(zhí)行;
B 繼承Thread類,創(chuàng)建一個新的class,將要執(zhí)行的代碼 寫到run函數(shù)里面。
本文介紹兩種實(shí)現(xiàn)方法。
第一種 創(chuàng)建函數(shù)并且傳入Thread 對象中
t.py 腳本內(nèi)容
import threading,time
from time import sleep, ctime
def 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()
thclass.py 腳本內(nèi)容:
import threading ,time
from time import sleep, ctime
def 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()
以上就是本文的全部內(nèi)容嗎,希望對大家學(xué)習(xí)python程序設(shè)計有所幫助。
相關(guān)文章
python實(shí)現(xiàn)的希爾排序算法實(shí)例
這篇文章主要介紹了python實(shí)現(xiàn)的希爾排序算法,實(shí)例分析了基于Python實(shí)現(xiàn)希爾排序的相關(guān)技巧,需要的朋友可以參考下2015-07-07
基于python進(jìn)行桶排序與基數(shù)排序的總結(jié)
今天小編就為大家分享一篇基于python進(jìn)行桶排序與基數(shù)排序的總結(jié),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-05-05
PyTorch搭建ANN實(shí)現(xiàn)時間序列風(fēng)速預(yù)測
這篇文章主要為大家介紹了PyTorch搭建ANN實(shí)現(xiàn)時間序列風(fēng)速預(yù)測,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-05-05

