我写了一个程序,它有一个共同的资源"蜡烛集",5个线程代理从蜡烛集中获取蜡烛,称呼他们"工人"和另一个更新蜡烛集的线程代理,称为" Candle Agent"。
所有主题都保持相同的threading.Condition()
工作流程如下:
工人wait()
处于条件状态,直到蜡烛代理更新蜡烛组。蜡烛代理更新蜡烛集,在条件上执行notifyAll()
并转到time.sleep()
5分钟。
与此同时,工人们醒来时,每个人都从蜡烛组中取出蜡烛,做一些动作并再次回到wait()
。
这一切似乎都运行正常,问题是,由于某种原因,当所有线程都处于wait()
状态并且蜡烛代理位于time.sleep()
时,我的计算机的任务管理器显示{{1}最多占23%。
我还将工作量减少到1,因此有1个工作线程和1个烛代线程,并且CPU消耗仍然相同......
为什么会发生这种情况?如何在没有线程活动的情况下减少CPU消耗?请帮忙......
答案 0 :(得分:0)