當前位置:首頁 » 編程語言 » 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)

熱點內容
app什麼情況下找不到伺服器 發布:2025-05-12 15:46:25 瀏覽:714
php跳過if 發布:2025-05-12 15:34:29 瀏覽:467
不定時演算法 發布:2025-05-12 15:30:16 瀏覽:131
c語言延時1ms程序 發布:2025-05-12 15:01:30 瀏覽:165
動物園靈長類動物配置什麼植物 發布:2025-05-12 14:49:59 瀏覽:734
wifi密碼設置什麼好 發布:2025-05-12 14:49:17 瀏覽:148
三位數乘兩位數速演算法 發布:2025-05-12 13:05:48 瀏覽:397
暴風影音緩存在哪裡 發布:2025-05-12 12:42:03 瀏覽:541
access資料庫exe 發布:2025-05-12 12:39:04 瀏覽:628
五開的配置是什麼 發布:2025-05-12 12:36:37 瀏覽:365