傳統(tǒng)方式是調(diào)用2個(gè)方法執(zhí)行1個(gè)任務(wù),方法按順序依次執(zhí)行
# -*- coding:utf-8 -*- import threading import time def run(n): print('task',n) time.sleep(3) if __name__ == '__main__': run('t1') run('t2')
多線程例子
2個(gè)線程同時(shí)并發(fā)執(zhí)行1個(gè)任務(wù)
# -*- coding:utf-8 -*- import threading import time def run(n): print('task',n) time.sleep(3) if __name__ == '__main__': t1=threading.Thread(target=run,args=('t1',)) t2=threading.Thread(target=run,args=('t2',)) t1.start() t2.start()
自己寫一個(gè)類繼承繼承threading.Thread
# -*- coding:utf-8 -*- import threading import time class MyThread(threading.Thread): def __init__(self,n): super(MyThread,self).__init__() self.n=n #這里面默認(rèn)就有一個(gè)run方法 def run(self): print('runing task',self.n) if __name__ == '__main__': #在主方法通過(guò)對(duì)象調(diào)用線程 t1=MyThread('t1') t2=MyThread('t2') t1.run() t2.run()
使用for循環(huán)啟動(dòng)多個(gè)線程
# -*- coding:utf-8 -*- import threading import time def run(n): print('task',n) time.sleep(3) if __name__ == '__main__': for i in range(10): t=threading.Thread(target=run,args=('t-%s'%i,)) t.start()
等多線程同時(shí)執(zhí)行完后,再執(zhí)行其它代碼,因?yàn)榫€程是與其它代碼一起運(yùn)行的
# -*- coding:utf-8 -*- import threading import time def run(n): print('task',n) time.sleep(3) if __name__ == '__main__': time_start=time.time() #定義一個(gè)空列表裝線程t實(shí)例 t_objects=[] for i in range(10): t=threading.Thread(target=run,args=('t-%s'%i,)) t.start() t_objects.append(t) # 等所有線程執(zhí)行完后,再執(zhí)行下面的代碼 # 因?yàn)榫€程與下面的代碼是同時(shí)運(yùn)行的 # 要想先等線程執(zhí)行完畢再執(zhí)行其它代碼 # 使用join()方法進(jìn)行阻塞 #在這里統(tǒng)一結(jié)束所有t線程 for i in t_objects: t.join() time_end=time.time() sun=time_end-time_start print(sun)
總結(jié)
以上所述是小編給大家介紹的python進(jìn)程與線程小結(jié)實(shí)例分析,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)歡迎給我留言,小編會(huì)及時(shí)回復(fù)大家的!