在我用 Stackless Python 编写的服务器中,我偶尔会在 5-10 秒的时间内出现 CPU 使用率的大幅峰值。这种情况偶尔发生,所以我无法追踪它。
我已经使用 cProfile 来尝试确定这些尖峰的来源,但 cProfile 给出了每个函数花费时间的总体情况。我真正想知道的是 CPU 峰值是否是由于单个小任务中发生的某些处理(并停止其他小任务),或者是否有多个小任务进行大量处理(即,当每个小任务变得活跃时,每个小任务都在做很多工作)。
有没有一种方便的方法可以连接到 Stackless Python 中的调度程序,以便我可以添加一些计时代码?换句话说,是否有一个函数可以在 tasklet 变为活动状态以及当它变为非活动状态时调用,我可以挂钩?