Python:为什么等待线程占用了这么多CPU

时间:2018-04-19 11:38:23

标签: python multithreading cpu

我写了一个程序,它有一个共同的资源"蜡烛集",5个线程代理从蜡烛集中获取蜡烛,称呼他们"工人"和另一个更新蜡烛集的线程代理,称为" Candle Agent"。

所有主题都保持相同的threading.Condition()

工作流程如下:

工人wait()处于条件状态,直到蜡烛代理更新蜡烛组。蜡烛代理更新蜡烛集,在条件上执行notifyAll()并转到time.sleep() 5分钟。 与此同时,工人们醒来时,每个人都从蜡烛组中取出蜡烛,做一些动作并再次回到wait()

这一切似乎都运行正常,问题是,由于某种原因,当所有线程都处于wait()状态并且蜡烛代理位于time.sleep()时,我的计算机的任务管理器显示{{1}最多占23%。

我还将工作量减少到1,因此有1个工作线程和1个烛代线程,并且CPU消耗仍然相同......

为什么会发生这种情况?如何在没有线程活动的情况下减少CPU消耗?请帮忙......

1 个答案:

答案 0 :(得分:0)

发现问题了!如果有人在将来偶然发现这一点,请检查主线程是否有循环!那是我案例中的错误