在我用Stackless Python编写的服务器中,我偶尔会遇到CPU使用率大幅上升5到10秒的持续时间。这种情况偶尔发生,所以我无法追踪它。
我已经使用cProfile来尝试确定这些峰值的来源,但cProfile给出了每个函数花费时间的总体情况。我真正想知道的是CPU峰值是由于在单个tasklet中发生的某些处理(以及停止其他tasklet)还是有多个tasklet进行大量处理(即,每个都变为活动状态,每个都在做很多工作)。
有没有一种方便的方法可以在Stackless Python中挂钩调度程序,以便我可以添加一些定时代码?换句话说,当一个tasklet变为活动状态并且当它变为非活动状态时,是否有一个函数可以被挂钩?
答案 0 :(得分:0)
我没有找到一个显式的函数来挂钩,当一个tasklet阻塞/恢复时,但由于Channel.receive()通常是在阻塞/恢复发生的时候,我会挂钩每次发生的事情。