當前位置:首頁 » 編程語言 » python線程時間

python線程時間

發布時間: 2025-02-07 01:04:26

python多線程編程之線程結束

線程管理包括線程創建、線程啟動、線程休眠、等待線程結束和線程停止。線程創建、線程啟動、線程休眠前文已提到過,這里不再贅述。

1 等待線程結束

等待線程結束使用的是join()方法,當前線程調用t1線程的join()方法時則阻塞當前進程,等待t1線程結束。如果t1線程結束或等待超時,則當前線程回到活動狀態繼續執行。join()方法語法如下:

join(timeout=None)

參數timeout是設置超時時間,單位是s。如果沒有設置timeout,則可以一直等待

當一個線程依賴於另一個線程的運行結果時,就可以調用另一個線程的join()方法等待它運行完成

example:

_value=0defthread_body():globalshared_valueprint('ThreadA開始......')for_inrange(5):print('ThreadA執行中......')shared_value+=1time.sleep(1)print('ThreadA結束......')defmain():print('主線程開始......')t1=threading.Thread(target=thread_body,name='ThreadA')t1.start()print('主線程被阻塞......')t1.join()print(f'value={shared_value}')print('主線程繼續執行......')

result:

主線程開始......ThreadA開始......主線程被阻塞......ThreadA執行中......ThreadA執行中......ThreadA執行中......ThreadA執行中......ThreadA執行中......ThreadA結束......value=5主線程繼續執行......

這里設置了一個共享變數shared_value,線程主體中對該變數進行了修改。在主函數裡面調用了t1的join()方法,就會導致主線程阻塞,等待線程t1執行結束,主線程才會繼續執行。從結果來看,主線程缺失被阻塞了,列印出來的shared_value的值已經由0變成5了

2 線程停止

對於有些復雜業務,需要設置一個線程停止變數來決定線程停止。例如,有一個抓取數據的系統,每隔半小時獲取執行一次數據抓取任務。數據抓取任務一般在子線程中進行,休眠一段時間再執行。這個子線程中國會有一個死循環。為了能停止子線程,應設置一個線程停止變數

example:

importthreadingimporttimeis_running=Truedefthread_body():whileis_running:print('ThreadA開始......')#數據抓取任務print('ThreadA執行中......')time.sleep(1)print('ThreadA結束......')print('整個程序執行完成')defmain():print('主線程開始......')t1=threading.Thread(target=thread_body)t1.start()command=input('請輸入停止指令:')ifcommand=='exit':globalis_runningis_running=Falseif__name__=='__main__':main()

result:

主線程開始......ThreadA開始......ThreadA執行中......請輸入停止指令:exitThreadA結束......整個程序執行完成

這里設置了一個線程停止變數is_running,默認值為True.當用戶通過鍵盤在控制台輸入exit時,其值變為False,然後程序終止。需要注意的是,控制台輸入exit後,還需要按enter鍵才可以。

Ⅱ python 多線程如何延時

importtime
fromthreadingimportThread

##定時輸入
classk(object):
x=0
sleepTime=0
def__init__(self,sleepTime=0):
self.sleepTime=sleepTime
self.input_delay_test()
definput_delay(self):
self.x=input("pleaseinput ")
definput_delay_test(self):
thd=Thread(target=self.input_delay)
thd.daemon=True
thd.start()
time.sleep(self.sleepTime)
print(self.x,self.sleepTime,sep='')
[print(x,end='')forxinrange(10)]

k(4)

熱點內容
說說怎麼上傳音樂 發布:2025-07-22 03:40:15 瀏覽:401
護網腳本 發布:2025-07-22 03:32:38 瀏覽:5
伺服器有多個網口怎麼查看地址 發布:2025-07-22 03:31:54 瀏覽:236
pda掃描服務密碼是多少 發布:2025-07-22 03:06:11 瀏覽:98
暗影精靈2代配置是什麼 發布:2025-07-22 03:02:07 瀏覽:432
密碼鎖恢復出廠設置後如何設置密碼 發布:2025-07-22 03:02:05 瀏覽:787
linux外網ip 發布:2025-07-22 02:49:23 瀏覽:888
內核和根文件系統的編譯與配置 發布:2025-07-22 02:45:00 瀏覽:590
ps存儲了文件但找不到 發布:2025-07-22 02:39:10 瀏覽:191
dcu反編譯 發布:2025-07-22 02:21:50 瀏覽:161