Python: 为什么等待线程占用这么多 CPU
Python: Why waiting threads take so much CPU
我写了一个程序,它有一个公共资源 "Candle Set",5 个线程代理从蜡烛集中获取蜡烛,调用它们 "Workers",另一个线程代理更新蜡烛集, 称为 "Candle Agent".
所有线程都持有相同的 threading.Condition()
工作流程如下:
工作人员 wait()
在蜡烛代理更新蜡烛组之前一直处于这种状态。蜡烛代理更新蜡烛组,在条件下执行 notifyAll()
并转到 time.sleep()
5 分钟。
与此同时,工人醒来,每人从蜡烛组中取出一根蜡烛,做一些动作,然后再次回到wait()
条件。
似乎一切正常,问题是,由于某种原因,当所有线程都处于 wait()
状态并且蜡烛代理处于 time.sleep()
时,我计算机的任务管理器显示 python
占了 23%。
我也将worker的数量减少到1个,这样就有了1个worker线程和1个candle agent线程,还是一样的CPU消耗...
为什么会发生这种情况?在不应该有线程 activity 的情况下如何减少 CPU 消耗?请帮忙...
找到问题了!如果将来有人偶然发现这个问题,请检查您的主线程是否存在循环!那是我的错误
我写了一个程序,它有一个公共资源 "Candle Set",5 个线程代理从蜡烛集中获取蜡烛,调用它们 "Workers",另一个线程代理更新蜡烛集, 称为 "Candle Agent".
所有线程都持有相同的 threading.Condition()
工作流程如下:
工作人员 wait()
在蜡烛代理更新蜡烛组之前一直处于这种状态。蜡烛代理更新蜡烛组,在条件下执行 notifyAll()
并转到 time.sleep()
5 分钟。
与此同时,工人醒来,每人从蜡烛组中取出一根蜡烛,做一些动作,然后再次回到wait()
条件。
似乎一切正常,问题是,由于某种原因,当所有线程都处于 wait()
状态并且蜡烛代理处于 time.sleep()
时,我计算机的任务管理器显示 python
占了 23%。
我也将worker的数量减少到1个,这样就有了1个worker线程和1个candle agent线程,还是一样的CPU消耗...
为什么会发生这种情况?在不应该有线程 activity 的情况下如何减少 CPU 消耗?请帮忙...
找到问题了!如果将来有人偶然发现这个问题,请检查您的主线程是否存在循环!那是我的错误