今天抽時間又學了一下python的多線程,理解的又多了一些,為了利於理解,寫了一段很簡單的代碼,如下:
import threading from time import sleep def task1(): #線程函數1 for i in range(0, 9): print("i am thread one !!") def task2(name): #線程函數2 print('hello {0} {1}'.format(name, 'weiyang')) sleep(1) t1 = threading.Thread(target=task1, ) #線程一,Thread函數有兩個參數,第一個是要調用的線程函數,第二個是要給所調用的線程函數所傳的參數,以元組的形式傳入,如果只有一個參數,則必須在后面加上一個',’ ,要不會報錯。 t2 = threading.Thread(target=task2, args=('zhang', )) #線程二 t1.start() #開始線程一
# t1.join() t2.start() #開始線程二
看一下輸出結果:
可以看到,在線程一還沒執行結束時,線程二就已經開始了,這說明兩個線程之間的工作室相互獨立、互不影響的。
如果想要讓線程一執行完之后再開始線程二,可以在t1.start()的后面加一句t1.join(),這個函數的意義是線程等待,程序會停留在這里,等線程一執行完之后再繼續執行下面的代碼。