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