【问题标题】:Python: Kill sleeping threadPython:杀死睡眠线程
【发布时间】:2023-02-01 20:51:26
【问题描述】:

我正在寻找结束处理警报的线程的方法。 现在我使用通过 concurrent.futures.thread.ThreadPoolExecutor 启动的线程,我有一个线程只是等待通过一个 queue.Queue 获得一个 datetime.datetime 对象,休眠直到达到 datetime 对象中指定的时间,然后发送警报通过另一个队列。

由于将重复安排警报并且程序预计会在更长的时间范围内运行,因此我不想使用threading.Timerasyncio.create_task 之类的解决方案,因为它们会为每个计划的警报生成新线程。有没有办法过早结束/杀死休眠线程,或者是否有比使用 ThreadPoolExecutor 和连续休眠线程更好的安排警报的方法?

【问题讨论】:

    标签: multithreading python-3.6


    【解决方案1】:

    遗憾的是,我找不到问题和我最终使用的答案,但基本上,我将 timeout 值修改为我想睡觉的时间。结合 block=True,我的脚本要么从队列中获取另一个项目,要么在达到超时后抛出 Empty 异常,我可以继续,就好像我的脚本刚从睡眠中醒来一样。

    【讨论】:

      猜你喜欢
      • 2023-03-26
      • 2016-08-20
      • 1970-01-01
      • 2015-11-09
      • 1970-01-01
      • 1970-01-01
      • 2015-06-11
      • 2022-01-25
      • 2016-03-30
      相关资源
      最近更新 更多