簡體   English   中英

Python3:如何停止/殺死線程

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM