Python停止长时间运行的taskq线程

2024-05-20 13:35:43 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个相当简单的程序,每个添加到taskq中的任务都在执行和计算某些东西,比如说30秒。此任务在某种while或for循环中“not”运行。在

def run(self):
    while not self.stopper.is_set():
        DO_MY_30_SECONDS_WORK(self)
        self.task_done()

现在,假设我有线程.事件这可以在任务完成之前/之后进行检查。但是有没有一种方法可以告诉已经运行的线程停止或退出它的执行。在


Tags: runself程序forismydefnot
1条回答
网友
1楼 · 发布于 2024-05-20 13:35:43

如果DO_MY_30_SECONDS_WORK(self)阻塞,则无法停止正在运行的线程。可以说,你可以将它设置为daemon线程,当主程序执行完成时,它会突然终止,如果线程实际上在保存资源(例如写入文件),那么通常完成一个线程不是一个好主意。在

你可以做的是重新设计DO_MY_30_SECONDS_WORK(self)并使其不阻塞,这意味着将工作切成小块,并在合理的时间间隔内检查停止标志,这样当你告诉线程这样做时,你的线程将有足够的响应能力来完成它自己。在

相关问题 更多 >