您好,登錄后才能下訂單哦!
threading方法怎么在Python項目中使用?相信很多沒有經驗的人對此束手無策,為此本文總結了問題出現的原因和解決方法,通過這篇文章希望你能解決這個問題。
一、 例子:我們對傳參是有要求的必須傳入一個元組,否則報錯
import _thread as thread import time def loop1(in1): print("Start loop 1 at:", time.ctime()) print("我是參數", in1) time.sleep(4) print("End loop 1 at:", time.ctime()) def loop2(in1, in2): print("Start loop 2 at:", time.ctime()) print("我是參數", in1, "和參數 ", in2) time.sleep(4) print("End loop 1 at:", time.ctime()) def main(): print("Starting at:", time.ctime()) thread.start_new_thread(loop1, ("liuming", )) # 上面我們傳參的時候, 我用的是:(“ liuming”), 這里面是沒有逗號的, 結果編譯報錯, 告訴我, 這里面必須傳入元組 # 因此, 我才在里面加了一個逗號, 使其變成一個元組 thread.start_new_thread(loop2, ("zhanglei", "liuhao")) print("All done at:", time.ctime()) if __name__ == "__main__": main() while True: time.sleep(10)
二、threading的使用
直接利用threading.Thread生成Thread的實例
格式:
t= threading.Thread(target=函數體,args=(,))#參數args要傳遞元組
t.start()#啟動多線程
t.join()#等待多線程執行完成
def main(): print("Start at :", time.ctime()) t1 = threading.Thread(target = loop1, args = ("王老大", )) t1.start()# 啟動多線程 t2 = threading.Thread(target = loop2, args = ("孫子", "好嗎")) t2.start() t1.join() t2.join() print("End at :", time.ctime()) if __name__ == "__main__": main()
從上面可以看出來,我們啟動了兩個線程,但是這兩個線程執行完了才打印最后一個結束語句。
2.守護線程
格式:線程.setDaemon(True)
作用:
(1)如果在程序中將子線程設置為守護線程,則子線程會在主線程結束的時候自動退出;
(2)一般認為,守護線程不重要或者不允許脫離子線程而獨立運行;
(3)守護線程能否有效果和環境有關系
注意點:該語句一定要寫在start語句之前,否則就會把子程序無限時間掛起,運行報錯,如:
def fun(): print("Start fun") time.sleep(2) print("End fun") print('Main thread') t3 = threading.Thread(target = fun, args = ()) t3.setDaemon(True) t3.start() time.sleep(1) print("Main thread End")
看完上述內容,你們掌握threading方法怎么在Python項目中使用的方法了嗎?如果還想學到更多技能或想了解更多相關內容,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。