您好,登錄后才能下訂單哦!
不懂python中調用線程的方法?其實想解決這個問題也不難,下面讓小編帶著大家一起學習怎么去解決,希望大家閱讀完這篇文章后大所收獲。
Python調用線程有兩種情況,一種是在主線程中直接調用,還一種是直接在其他方法中調用線程
在傳遞參數的方式上有所區別,兩種調用方法如下
1. 主進程中直接調用線程:
from threading import Thread import time def sayhi(name,input,number): for i in range(1,10): if number == "線程號1": time.sleep(2) print("這是線程號:%s - %s say hello %s - %s" % (number,name, str(i),input)) else : time.sleep(1) print("線程號:%s - %s say hello %s - %s 休息1秒" % (number,name, str(i),input)) if __name__ == '__main__': for i in range(1,3): t = Thread(target=sayhi, args=('mike','to you',"線程號"+str(i) )) t.start() print("主線程結束")
2.在方法中調用線程:
在方法中調用線程的時候,如果不想另外寫一個class,也不想用self參數,
在寫Thread(target=Th3, args=(input,))的時候,記得args數的最后中加一個“逗號”,這樣表明你傳的是一個數據元組
否則會報“takes 1 positional argument but 2 were given”這種錯誤,因為傳入的參數數量識別時出現了問題
# -*- coding: utf-8 -*- import time from threading import Thread def doWork(input): global interval try: print("begin") if "DERNAV" in input.upper(): t = Thread(target=Th2, args=(input,)) t.start() elif "PBD9008" in input.upper(): t = Thread(target=Th3, args=(input,)) t.start() except Exception as e : print(e) def Th2(input): for i in range(1,10): print(input+"_"+time.strftime('%Y.%m.%d %H:%M:%S')) time.sleep(1) def Th3(input): for i in range(1,10): print(input+"_"+time.strftime('%Y.%m.%d %H:%M:%S')) time.sleep(2) def run(interval): while True: try: doWork("PBD9008") doWork("DERNAV") time_remaining = interval - time.time() % interval time.sleep(time_remaining) except Exception as e: print(e) if __name__ == '__main__': global interval interval = 300 text = run(interval)
感謝你能夠認真閱讀完這篇文章,希望小編分享python中調用線程的方法內容對大家有幫助,同時也希望大家多多支持億速云,關注億速云行業資訊頻道,遇到問題就找億速云,詳細的解決方法等著你來學習!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。