一、 例子:我們對傳參是有要求的必須傳入一個元組,否則報錯
import _thread as thread import time def loop1(in1): print("Start loop 1 at:", time.ctime()) print("我是參數(shù)", in1) time.sleep(4) print("End loop 1 at:", time.ctime()) def loop2(in1, in2): print("Start loop 2 at:", time.ctime()) print("我是參數(shù)", in1, "和參數(shù) ", 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”), 這里面是沒有逗號的, 結(jié)果編譯報錯, 告訴我, 這里面必須傳入元組 # 因此, 我才在里面加了一個逗號, 使其變成一個元組 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的實(shí)例
格式:
t= threading.Thread(target=函數(shù)體,args=(,))#參數(shù)args要傳遞元組
?t.start()#啟動多線程
t.join()#等待多線程執(zhí)行完成
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()
從上面可以看出來,我們啟動了兩個線程,但是這兩個線程執(zhí)行完了才打印?最后一個結(jié)束語句。
2.守護(hù)線程
?格式:線程.setDaemon(True)
作用?:
(1)如果在程序中將子線程設(shè)置為守護(hù)線程,則子線程會在主線程結(jié)束的時候自動退出?;
(2)一般認(rèn)為,守護(hù)線程不重要或者不允許脫離子線程而獨(dú)立運(yùn)行;
(3)守護(hù)線程能否有效果和環(huán)境有關(guān)系
注意點(diǎn):該語句一定要寫在start語句之前,否則就會把子程序無限時間掛起,運(yùn)行報錯,?如:
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")
?解釋:我們可以看出主線程結(jié)束后(即打印完了”Main thread End")后,我們的子線程的最后一個打印沒有出來,程序就結(jié)束了,說明主線程結(jié)束,子線程無論執(zhí)行到哪里都會被kill掉,和我們的預(yù)期一樣。
三、源碼
d24_2_usage_of_threading.py
地址:https://github.com/ruigege66/Python_learning/blob/master/d24_2_usage_of_threading.py
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯(lián)系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長非常感激您!手機(jī)微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
