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 物件
中
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))
for th in threadpool:
th.start()
for th in threadpool :
threading.thread.join( th )
print 'all done at:', now()
if __name__ == '__main__':
main()
第二種是建立乙個新的class,將要執行的** 寫到run函式裡面。
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):
for th in thpool:
th.start()
for th in thpool:
th.join()
print 'all done at:', now()
if __name__ == '__main__':
main()
多執行緒有幾種實現方法 同步有幾種實現方法
多執行緒有兩種實現方法,分別是繼承thread類與實現 runnable介面 同步的實現方面有兩種,分別是synchronized,wait與 notify wait 使乙個執行緒處於等待狀態,並且釋放所持有的物件的 lock sleep 使乙個正在執行的執行緒處於睡眠狀態,是乙個靜態方法,呼叫此方...
多執行緒有幾種實現方法 同步有幾種實現方法
多執行緒有兩種實現方法,分別是繼承 thread 類與實現 runnable 介面 同步的實現方面有兩種,分別是synchronized,wait 與notify wait 使乙個執行緒處於等待狀態,並且釋放所持有的物件的 lock。sleep 使乙個正在執行的執行緒處於睡眠狀態,是乙個靜態方法,呼...
多執行緒有幾種實現方法 同步有幾種實現方法?
多執行緒有兩種實現方式,分別是繼承thread類與實現runnable介面。同步的實現方法有兩種,分別是synchronized,wait與notify。wait 使乙個執行緒處於等待狀態,並且釋放所持有的物件的lock。sleep 使乙個正在執行的執行緒處於睡眠狀態,是乙個靜態方法,呼叫此方法要捕...