您好,登錄后才能下訂單哦!
這篇文章主要為大家展示了“python線程有哪些創建方式”,內容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領大家一起研究并學習一下“python線程有哪些創建方式”這篇文章吧。
Python3 線程中常用的兩個模塊為:
_thread
threading(推薦使用)
使用Thread類創建
import threading from time import sleep,ctime def sing(): for i in range(3): print("正在唱歌...%d"%i) sleep(1) def dance(): for i in range(3): print("正在跳舞...%d"%i) sleep(1) if __name__ == '__main__': print('---開始---:%s'%ctime()) t1 = threading.Thread(target=sing) t2 = threading.Thread(target=dance) t1.start() t2.start() #sleep(5) # 屏蔽此行代碼,試試看,程序是否會立馬結束? print('---結束---:%s'%ctime()) """ 輸出結果: ---開始---:Sat Aug 24 08:44:21 2019 正在唱歌...0 正在跳舞...0---結束---:Sat Aug 24 08:44:21 2019 正在唱歌...1 正在跳舞...1 正在唱歌...2 正在跳舞...2 """
說明:主線程會等待所有的子線程結束后才結束
使用Thread子類創建
為了讓每個線程的封裝性更完美,所以使用threading模塊時,往往會定義一個新的子類class,只要繼承threading.Thread就可以了,然后重寫run方法。
import threading import time class MyThread(threading.Thread): def run(self): for i in range(3): time.sleep(1) msg = "I'm "+self.name+' @ '+str(i) #name屬性中保存的是當前線程的名字 print(msg) if __name__ == '__main__': t = MyThread() t.start() """ 輸出結果: I'm Thread-5 @ 0 I'm Thread-5 @ 1 I'm Thread-5 @ 2 """
使用線程池ThreadPoolExecutor創建
from concurrent.futures import ThreadPoolExecutor import time import os def sayhello(a): for i in range(10): time.sleep(1) print("hello: " + a) def main(): seed = ["a", "b", "c"] # 最大線程數為3,使用with可以自動關閉線程池,簡化操作 with ThreadPoolExecutor(3) as executor: for each in seed: # map可以保證輸出的順序, submit輸出的順序是亂的 executor.submit(sayhello, each) print("主線程結束") if __name__ == '__main__': main()
以上是“python線程有哪些創建方式”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。