1

在我用 Stackless Python 编写的服务器中,我偶尔会在 5-10 秒的时间内出现 CPU 使用率的大幅峰值。这种情况偶尔发生,所以我无法追踪它。

我已经使用 cProfile 来尝试确定这些尖峰的来源,但 cProfile 给出了每个函数花费时间的总体情况。我真正想知道的是 CPU 峰值是否是由于单个小任务中发生的某些处理(并停止其他小任务),或者是否有多个小任务进行大量处理(即,当每个小任务变得活跃时,每个小任务都在做很多工作)。

有没有一种方便的方法可以连接到 Stackless Python 中的调度程序,以便我可以添加一些计时代码?换句话说,是否有一个函数可以在 tasklet 变为活动状态以及当它变为非活动状态时调用,我可以挂钩?

4

1 回答 1

0

我还没有找到一个明确的函数可以在 tasklet 阻塞/恢复时挂钩,但是由于 Channel.receive() 通常是在阻塞/恢复发生时,所以我挂钩到每一次发生的事件。

于 2011-12-28T18:56:00.243 回答