當前位置:首頁 » 編程語言 » python線程終止

python線程終止

發布時間: 2024-05-09 13:29:49

python中如何在一段時間後停止程序

用到threading的Timer,也類似單片機那樣子,在中斷程序中再重置定時器,設置中斷,python實例代碼如下:

import threading

import time

def change_user():

print('這是中斷,切換賬號')

t = threading.Timer(3, change_user)

t.start()

#每過3秒切換一次賬號

t = threading.Timer(3, change_user)

t.start()

while True:

print('我在爬數據')

time.sleep(1)

(1)python線程終止擴展閱讀

有時當一個條件成立的情況下,需要終止程序,可以使用sys.exit()退出程序。sys.exit()會引發一個異常:

1、如果這個異常沒有被捕獲,那麼python編譯器將會退出,後面的程序將不會執行。

2、如果這個異常被捕獲(try...except...finally),捕獲這個異常可以做一些額外的清理工作,後面的程序還會繼續執行。

註:0為正常退出,其他數值(1-127)為不正常,可拋異常事件供捕獲。另一種終止程序的方法os._exit()

一般情況下使用sys.exit()即可,一般在fork出來的子進程中使用os._exit()

採用sys.exit(0)正常終止程序,程序終止後shell運行不受影響。

採用os._exit(0)關閉整個shell,調用sys._exit(0)後整個shell都重啟了(RESTART Shell)。

❷ Python里如何終止一個線程

Python用sleep停止一個線程的運行,而不影響主線程的運行,案例代碼如下:

fromthreadingimport*
importtime

classMyThread(Thread):
defrun(self):
self.ifdo=True;
whileself.ifdo:
print'Iamrunning...'
time.sleep(2)

defstop(self):
print'Iamstoppingit...'
self.ifdo=False;

tr=MyThread()
tr.setDaemon(True)
tr.start()
print'Iwillstopit...'
time.sleep(5)
tr.stop()
tr.join()

❸ Python中怎麼在終止一個線程的同時終止另外一個線程

設置一個全局變數,初值為False
設置鍵盤監聽事件,當監測到特定按鍵時,將全局變數的值修改為True
在每個子線程中,循環檢測全局變數的值,當檢測到值為True時退出線程函數。

❹ Python ThreadPoolExecutor 異常中止解決方案

通常情況,我們利用 Ctrl+C 讓程序觸發 KeyboardInterrupt 異常,中止程序運行。線程池方案下, Ctrl-C 失效,當線程池裡的線程任務跑完後,才會觸發 KeyboardInterrupt

上下文管理協議相當於隱性地省略了 threadPool.shutdown(wait=True) ,同時,程序正常執行完成或出現異常中斷的時候,就會調用 __exit__() 方法,接下來進行異常中止的基礎。

適用於 Django 等 WEB 應用框架,本身自帶多線程,修改全局變數簡單,但要注意線程安全。

程序運行中,只需 sign = 1 或者 exiting.set() ,worker 函數則跳過主要運算部分,剩餘線程任務將迅速完成,變相達到中止多線程任務的目的。

提交給線程池的每個線程任務 task 加入 threadPool 中,方便後續對 task 進行操作。當 for 循環內的 task 全部提交後,線程會再後台運行,而進程運行至 while 中堵塞,直至 threadPool 中最後一個線程是否 .done() 。若進程堵塞在 while 中接收到 Ctrl+C KeyboardInterrupt 異常,則從後往前取消 threadPool 中所有任務,達到中止目的。

❺ python里怎麼終止程序的執行

quit() exit()

執行到此命令時,程序終止。

如果是程序陷入死循環,想強制結束,則按Ctrl + C。這個特別關鍵。

Python的設計哲學是「優雅」、「明確」、「簡單」。因此,Perl語言中「總是有多種方法來做同一件事」的理念在Python開發者中通常是難以忍受的。Python開發者的哲學是「用一種方法,最好是只有一種方法來做一件事」。

在設計Python語言時,如果面臨多種選擇,Python開發者一般會拒絕花俏的語法,而選擇明確的沒有或者很少有歧義的語法。由於這種設計觀念的差異,Python源代碼通常被認為比Perl具備更好的可讀性,並且能夠支撐大規模的軟體開發。這些准則被稱為Python格言。在Python解釋器內運行import this可以獲得完整的列表。

擴展質料:

Python在執行時,首先會將.py文件中的源代碼編譯成Python的byte code(位元組碼),然後再由Python Virtual Machine(Python虛擬機)來執行這些編譯好的byte code。這種機制的基本思想跟Java,.NET是一致的。

然而,Python Virtual Machine與Java或.NET的Virtual Machine不同的是,Python的Virtual Machine是一種更高級的Virtual Machine。這里的高級並不是通常意義上的高級,不是說Python的Virtual Machine比Java或.NET的功能更強大。

而是說和Java 或.NET相比,Python的Virtual Machine距離真實機器的距離更遠。或者可以這么說,Python的Virtual Machine是一種抽象層次更高的Virtual Machine。

基於C的Python編譯出的位元組碼文件,通常是.pyc格式。

除此之外,Python還可以以交互模式運行,比如主流操作系統Unix/Linux、Mac、Windows都可以直接在命令模式下直接運行Python交互環境。直接下達操作指令即可實現交互操作。

參考資料:Python-網路

❻ python pyqt5在使用多線程時自動退出是怎麼回事

線程只執行一次……讓我來猜一猜。

你可能會認為創建一個線程去執行某個動作就完事了?

一段代碼不管是在主線程里還是在新建的線程里,它都是按代碼本身的規則那麼執行的,該循環就循環,該結束就結束。

所以,我們建立一個線程去執行某個動作,主要就是讓這個動作的執行不影響主程的執行,不要因為它導致主程序的某環節等待這個動作的結果。

舉例來說,一個定時3秒去讀一下某個文件,總不能做個循環,讀一下文件,然後sleep3秒吧,那除了這個,什麼也幹不了,基本都是在【等待3秒】這里耗著了。解決辦法就是做個線程去完成【讀某個文件】,然後這個事完了之後、前再建一個同樣的線程讓它三秒後執行。

看下圖:

這個sort_loop就是這樣乾的:

【紅框2】就是主要的工作內容(對self.data進行收縮)

如果簡簡單單的就這,那它就執行一次就完事了,哪怕你把sort_loop放到新線程里,也是一樣。

要在sort_loop里再新建一個線程,新線程還是執行sort_loop,於是就是這樣的:

A把桌子擦了擦,把抹布塞給了B;

B把桌子擦了擦,把抹布塞給了C;

C把桌子擦了擦,把抹布塞給了D...

這才構成一個線程循環。

熱點內容
冒險家選哪個配置性價比高 發布:2024-11-27 20:58:36 瀏覽:876
阿里雲伺服器可以多開嗎 發布:2024-11-27 20:58:18 瀏覽:496
圖片水印加密 發布:2024-11-27 20:52:37 瀏覽:118
php客戶管理 發布:2024-11-27 20:47:26 瀏覽:371
java數組中的對象 發布:2024-11-27 20:45:37 瀏覽:492
手機報停恢復需要的是什麼密碼 發布:2024-11-27 20:37:02 瀏覽:592
域名訪問量查詢 發布:2024-11-27 20:22:13 瀏覽:725
如何清理網頁帳號和登錄密碼 發布:2024-11-27 20:18:53 瀏覽:372
大發明解壓密碼 發布:2024-11-27 20:18:52 瀏覽:502
藍鷗c語言 發布:2024-11-27 20:14:38 瀏覽:813