繁体   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