1. 程式人生 > >python多執行緒(二)

python多執行緒(二)

開啟執行緒的兩種方式

#方式一
import threading
import time
def run(n):
    time.sleep(2)
    print("runing",n)
start_time=time.time()
if __name__ == '__main__':
    t1=threading.Thread(target=run,args=("T1",))  #執行緒
    t2=threading.Thread(target=run,args=("T2",))
    t1.start()
    t2.start()
    print("主執行緒")
#輸出結果:
'''
主執行緒
runing T1
runing T2
'''
#方式二
#類的執行緒
import threading
import time
class pronse(threading.Thread):
    def __init__(self,n):
        super(pronse,self).__init__()
        self.n=n

    def run(self):
        time.sleep(0.22)
        print("%s is runing !!"% self.n)
if __name__=='__main__':
    p1=pronse("薛琪")
    p2=pronse("張立朋")
    p1.start()
    p2.start()
    print("主執行緒")

在這裡舉一個簡單的例子,子執行緒與主執行緒的優先執行順序:

import time
import threading
def run(n):
    print("task:",n)
    time.sleep(2)  #等待兩秒
    print("task_done:",n) 
start_time=time.time()
if __name__=='__main__':
    for i in range(50):  #建立50次,非常迅速的建立完畢
        t=threading.Thread(target=run,args=("t--%s" %i,))
        t.start()   #開啟執行緒
    print("主執行緒 is all finsind")  #此時主執行緒已執行完畢,時間也打印出來了為:0.017952442169189453
    print(time.time()-start_time)  #但整個程式尚未結束,等待兩秒後子執行緒列印完畢,結束整個程式
'''
輸出結果為:
task_done: t--1
task_done: t--3
task_done: t--5
task_done: t--6
task_done: t--4
task_done: t--8
task_done: t--9
task_done: t--7
task_done: t--10
task_done: t--12
task_done: t--11
task_done: t--13
task_done: t--14
task_done: t--17
task_done: t--15
task_done: t--16
task_done: t--19
task_done: t--20
task_done: t--18
task_done: t--21
task_done: t--22
task_done: t--24
task_done: t--25
task_done: t--23
task_done: t--27
task_done: t--26
task_done: t--28
task_done: t--31
task_done: t--32
task_done: t--30
task_done: t--29
task_done: t--33
task_done: t--34
task_done: t--35
task_done: t--36
task_done: t--39
task_done: t--40
task_done: t--37
task_done: t--38
task_done: t--43
task_done: t--42
task_done: t--41
task_done: t--45
task_done: t--44
task_done: t--46
task_done: t--47
task_done: t--48
task_done: t--49
'''

注:小編現在還是正在學習的一個菜鳥,如有錯請多多指教