[英]Python3: How to stop/kill thread
我的代碼運行 N 個線程。 我想在某些情況下停止特定線程,但其余線程應繼續運行。 一旦每個線程完成它的工作,我就會做一些操作。 有沒有辦法在 Python 3 中停止運行線程。
我當前的代碼是在 Python2 中實現的,它通過“_Thread__stop()”來實現。 Python3中是否有相同的東西?
做法是向線程“發出信號”,表示該結束了,然后線程需要退出。 這不像您殺死一個進程那樣殺死,而是您的線程 function 的常規 state 機器行為。
例如,假設您的線程正在中斷。 您應該在循環中插入一條 if 語句,指示線程 function if stop is True
中斷或返回。 stop
變量應該是與主線程(或需要停止線程的線程)共享的變量,將其更改為True
。 通常在此之后,停止線程將希望通過join()
等待線程完成
殺死線程是一個壞習慣,最好是創建一個“標志”,它會告訴您線程何時完成工作。 考慮以下示例:
import threading
import random
class CheckSomething(threading.Thread):
def __init__(self, variable):
super(CheckSomething, self).__init__()
self.start_flag = threading.Event()
self.variable = variable
def check_position(self, variable):
x = random.randint(100)
if variable == x:
self.stop_checking()
def run(self):
while True:
self.check_position(self.variable)
def stop_checking():
self.start_flag.set()
def stopped():
return self.start_flag.is_set()
Event() 的 set() 方法將其狀態設置為 True。 您可以在文檔中閱讀更多內容: https://docs.python.org/3.5/library/threading.html
因此,當您遇到要退出的條件時,您需要調用 stop_checking() 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.