簡體   English   中英

如何停止執行程序中的循環運行?

[英]How to stop loop running in executor?

我正在運行需要時間才能完成的功能。 用戶可以選擇停止此功能/事件。 有沒有簡單的方法來停止線程或循環?

class ThreadsGenerator:
    MAX_WORKERS = 5

    def __init__(self):
        self._executor = ThreadPoolExecutor(max_workers=self.MAX_WORKERS)
        self.loop = None
        self.future = None

    def execute_function(self, function_to_execute, *args):
        self.loop = asyncio.get_event_loop()
        self.future = self.loop.run_in_executor(self._executor, function_to_execute, *args)

        return self.future

我想在用戶單擊“停止”按鈕時盡快停止該功能,而不是等待完成其工作。

提前致謝!

有沒有簡單的方法來停止線程或循環?

您無法強行停止線程。 要實現取消功能,您的函數將需要接受should_stop參數,例如threading.Event的實例,並偶爾檢查是否已設置。

如果您確實需要強行停止,並且您的函數可以通過多處理在單獨的進程中運行,則可以在單獨的進程中運行它,並在應該停止的情況下終止該進程。 請參閱此答案以詳細了解異步環境中的方法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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