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